pagetop

BLOG

【jquery】スクロールして動画を再生する

  • HOME

  • BLOG

  • 【jquery】スクロールして動画を再生する

Article

【jquery】スクロールして動画を再生する

javascript

TwitterやFacebookのTLによく使われますね。
スクロールしたら自動で動画が再生されるアレ。

このギミックをjqueryで実装したメモです。

スクリプトを読み込む

jqueryなので、お約束のモジュールいれましょう。
フッタ部分でいいです。

<script src="jquery-1.11.3.min.js"></script>

また、その下にファンクションをいれます。

<script src="jquery-1.11.3.min.js"></script>
<script src="function.js"></script>

jqueryはhttpsを利用してもいいです。
function.jsではなく、function.js内のスクリプトを、そのまま記述してもOKです。

HTMLを記述する

ここではvideoタグを使用します。

<video muted playsinline loop>
<source src="movie.mp4" type="video/mp4">
<img src="movie.png">
</video>

function.jsのスクリプト

function.js内に記述するスクリプトです。

$(window)
.on('scroll resize', function () {
var windowScrollTop = $(window).scrollTop();
var windowInnerHeight = window.innerHeight;

var $video = $('video');
var videoTop = $('video').offset().top;
var videoHeight = $('video').innerHeight();

// videoが停止している、かつvideoが画面内に入ってきた場合、再生処理
if ($video[0].paused && (windowScrollTop + windowInnerHeight > videoTop)) {
$video[0].play();
}

// videoが再生中、かつ画面外に出た場合、停止処理
if (!$video[0].paused && ((windowScrollTop + windowInnerHeight < videoTop) || (windowScrollTop > videoTop + videoHeight))) {
$video[0].pause();
}
})
.trigger('scroll');

ウインドウのスクロール量と高さを取得

var windowScrollTop = $(window).scrollTop();
var windowInnerHeight = window.innerHeight;

videoタグの情報を取得

var videoTop = $('video').offset().top;// videoがページの最上部からどの位置にあるか取得
var videoHeight = $('video').innerHeight();// videoの高さ取得

停止再生を実行

// videoが停止している、かつvideoが画面内に入ってきた場合、再生処理
if ($video[0].paused && (windowScrollTop + windowInnerHeight > videoTop)) {
$video[0].play();
}
// videoが再生中、かつ画面外に出た場合、停止処理
if (!$video[0].paused && ((windowScrollTop + windowInnerHeight < videoTop) || (windowScrollTop > videoTop + videoHeight))) {
$video[0].pause();
}

これで実行できます。

デモ

Spread the love