
bxSliderで動画再生終了後にスライドショーを始める
ミッション、videoタグの再生終了後にスライド
bxSliderはレスポンシブ対応のスライダーです。
トライムでも使い勝手がよいので、よく利用します。
一枚目が動画で再生終了後にスライドが始まるという、
少し難しいご要望がありましたので、
bxSliderのコールバックを利用して実現してみました。
ループして一枚目に戻ると、また動画の再生が始まります。
動作デモ
実際の動作をご確認ください。
※下のボックスにマウスオーバーすると「RERUN」というボタンが右下に出ます。
最初から確認したい場合はそちらをクリックして下さい。
See the Pen yaEzox by leo (@leo-trym) on CodePen.
ソース
HTML
<ul class="bxslider"> <li><video id="video" src="video.mp4"></video></li> <li><img src="img_01.jpg" alt=""></li> <li><img src="img_02.jpg" alt=""></li> </ul>
JS
$(function() {
var $video = $('#video').get(0);
$slider = $('.bxslider').bxSlider({
infiniteLoop: true,
onSliderLoad : function() {
$video.play();
},
onSlideAfter: function($slideElement, oldIndex, newIndex) {
if ( newIndex == 0 ){
$video.play();
} else {
$video.pause();
$video.currentTime = 0;
$slider.startAuto();
}
}
});
$video.addEventListener("play", function() {
$slider.stopAuto();
});
$video.addEventListener("ended", function() {
$slider.goToNextSlide();
});
});
onSliderLoad と onSlideAfter というコールバックを利用してます。
onSliderLoad で bxSlider 読み込み完了後に動画を再生します。
onSlideAfter では現在のスライドが何枚目なのかを取得し、
1枚目の場合、動画を再生、それ以外では動画を停止し再生位置を0に戻します。
21行目では動画の再生中はスライドしないように、
スライダーのautoplayを停止しています。
25行目では動画再生終了後に、次のスライドに移動するようにしています。
まとめ
最近はほかにも便利なスライダーのプラグインがあり、
目新しさはなくなってきたbxSliderですが、
社内ではみんなが使い慣れているので、利用頻度が高いプラグインです。
今回のような自動再生の動画と組み合わせたのは初めてでしたが、
便利なコールバックが用意されているので、実現することが出来ました。
Writer
KO
誕生日に会社のみんなから『世界文学全集』をプレゼントしてもらった読書好きフロントエンド・エンジニアです。WordPressとMovableTypeが得意ですが、本当の特技は薪割りです。







































