実現したいこと
スクロールして各動画が画面内に入った瞬間に動画を再生したい。
前提
videoタグで動画を挿入しているページを作成しています。
ページ内で動画が6つあります。
発生している問題
デバイス、ブラウザによっては、画面に一番上の動画部分が見え始めた時に、二番目以降の動画も同時に再生されてしまい、動画の冒頭が見えなくなってしまいます。
私がこの問題を確認できたのは、
PCのfire fox、IOSのChrome、fire foxでした。
PCのChrome、Safari、IOSのSafariでは、各動画が画面内に入った瞬間に動画が再生されました。
初心者でしてわからないことが多く、聞ける人も周りにいないため、こちらを使わせていただきました。どなたかご教授いただけると幸いです。
該当のソースコード
HTML
1 <div class="video_wrap"> 2 <video loop autoplay muted playsinline> 3 <source src="movie01.mp4" type="video/mp4"> 4 </video> 5 </div> 6 <div class="video_wrap"> 7 <video loop autoplay muted playsinline> 8 <source src="movie02.mp4" type="video/mp4"> 9 </video> 10 </div> 11 <div class="video_wrap"> 12 <video loop autoplay muted playsinline> 13 <source src="movie03.mp4" type="video/mp4"> 14 </video> 15 </div> 16 <div class="video_wrap"> 17 <video loop autoplay muted playsinline> 18 <source src="movie04.mp4" type="video/mp4"> 19 </video> 20 </div> 21 <div class="video_wrap"> 22 <video loop autoplay muted playsinline> 23 <source src="movie05.mp4" type="video/mp4"> 24 </video> 25 </div> 26 <div class="video_wrap"> 27 <video loop autoplay muted playsinline> 28 <source src="movie06.mp4" type="video/mp4"> 29 </video> 30 </div>
javascript
1$(window) 2 .on('scroll resize', function () { 3 // ウインドウのスクロール量取得 4 var windowScrollTop = $(window).scrollTop(); 5 // ウインドウの高さ取得 6 var windowInnerHeight = window.innerHeight; 7 8 var $video = $('video'); 9 // videoがページの最上部からどの位置にあるか取得 10 var videoTop = $('video').offset().top; 11 // videoの高さ取得 12 var videoHeight = $('video').innerHeight(); 13 14 // videoが停止している、かつvideoが画面内に入ってきた場合、再生処理 15 if ($video[0].paused && (windowScrollTop + windowInnerHeight > videoTop)) { 16 $video[0].play(); 17 } 18 19 // videoが再生中、かつ画面外に出た場合、停止処理 20 if (!$video[0].paused && ((windowScrollTop + windowInnerHeight < videoTop) || (windowScrollTop > videoTop + videoHeight))) { 21 $video[0].pause(); 22 } 23 }) 24 .trigger('scroll');

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/04/05 10:38