前提
jQueryライブラリ「inview」を使い画面可視範囲に入ると
audioが再生されるサイトを作っています
実現したいこと
audio停止時にフェードアウトを追加したい
試したこと
こちらのサイトを参考にしてフェードアウト機能を付け足そうとしましたが
うまくいきませんでした(やり方はこちらのサイトのフェードアウトの方法でなくても構いません。)
フェードアウト記入前のコード
html
1<body> 2 3 <p>文章1</p> 4 <p>文章2</p> 5 <p>文章3</p> 6 <div class="bgmbox"> 7 <audio class="msc" src="audio.mp3"></audio> 8 <p>文章4</p> 9 <p>文章5</p> 10 <p>文章6</p> 11 </div> 12 <p>文章7</p> 13 <p>文章8</p> 14 15 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 16 <script src="script.js"></script> 17 <script type="text/javascript" src="jquery.inview-master/jquery.inview.js"></script> 18 19</body>
jQuery
1/*inviewに入ったらBGM再生、出たら停止*/ 2 3$(function() { 4$('.bgmbox').on('inview', function(event, isInView) { 5 var audio = $('audio', this)[0]; 6 if (isInView) { 7 audio.play(); 8 9 } else { 10 audio.pause(); 11 audio.currentTime = 0; 12 } 13 }); 14 }) 15 16```### フェードアウト記入後のコード 17```jQuery 18//mediaオブジェクトの取得 19var media = document.getElementById("msc"); 20 21 22//フェードイン関数 23function fadein() 24{ 25 var vl = media.volume; 26 if (vl < 1.0) 27 { 28 media.volume = Math.ceil((vl+0.1)*10)/10; 29 setTimeout("fadein()",200); 30 } 31} 32 33 34//フェードアウト関数 35function fadeout() 36{ 37 var vl = media.volume; 38 if (vl > 0) 39 { 40 media.volume = Math.floor((vl-0.1)*10)/10; 41 setTimeout("fadeout()",200); 42 } 43} 44 45 46 47/*inviewに入ったらBGM再生、出たら停止*/ 48 49$(function() { 50$('.bgmbox').on('inview', function(event, isInView) { 51 var audio = $('audio', this)[0]; 52 if (isInView) { 53 audio.play(); 54 fadein(); 55 56 57 } else { 58 fadeout(); 59 audio.pause(); 60 audio.currentTime = 0; 61 } 62 }); 63 })
あなたの回答
tips
プレビュー