【コピペで使える】レスポンシブ対応のYouTube動画スライダー実装サンプル

自身のウェブサイトで、YouTubeの埋め込み動画をかっこよくスライダーで表示させたいと考えたことはないでしょうか?今回はその実装サンプルをご紹介します。
 

デモ

 

実装の準備

今回スライダーには「Swiper」というJavascriptライブラリを利用します。

このライブラリを使うには以下のJSファイルとCSSファイルをCDNで読み込ませておく必要があります。


<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/3.4.1/css/swiper.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/3.4.1/js/swiper.min.js"></script>

 

実装方法

HTML部


  <div id="slider" class="swiper-container">
    <div class="swiper-wrapper">
      <div class="swiper-slide">
        <!-- YouTube埋め込みコード -->
      </div>
      <div class="swiper-slide">
        <!-- YouTube埋め込みコード -->
      </div>
      <div class="swiper-slide">
        <!-- YouTube埋め込みコード -->
      </div>
    </div>
    <div class="swiper-button-prev swiper-button-white"></div>
    <div class="swiper-button-next swiper-button-white"></div>
  </div>

  <div id="thumbs" class="swiper-container">
    <div class="swiper-wrapper">
      <div class="swiper-slide">
        <!-- YouTube動画サムネイル -->
      </div>
      <div class="swiper-slide">
        <!-- YouTube動画サムネイル -->
      </div>
      <div class="swiper-slide">
        <!-- YouTube動画サムネイル -->
      </div>
    </div>
  </div>

動作確認がしやすいようにサンプルでは動画を3つ表示する設定としていますが、動画数を変更したい場合は「swiper-slideクラス」を追加・削除すればOKです。


 

JS部


<script>
<!--
var slider = new Swiper ('#slider', {
nextButton: '.swiper-button-next',
prevButton: '.swiper-button-prev'
})
var thumbs = new Swiper('#thumbs', {
centeredSlides: true,
spaceBetween: 10,
slidesPerView: "auto",
touchRatio: 0.2,
slideToClickedSlide: true
});
slider.params.control = thumbs;
thumbs.params.control = slider;
-->
</script>

Javascriptコードはこのライブラリでのほぼ定型のサンプルコードとなりますのであまり深く考えずにコピペしてもらえばよいと思います。
 

CSS部


<style>
.swiper-container{
  text-align: center;
}
.swiper-container .swiper-slide img{
  max-width: 100%;
  width: 100%;
  height: auto;
}
.swiper-container .swiper-slide {
  position: relative;
  width: 100%;
}
.swiper-container .swiper-slide:before {
  content:"";
  display: block;
  padding-top: 56.25%;
}
.swiper-container .swiper-slide iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
#thumbs {
  height: 20%;
  box-sizing: border-box;
  padding: 10px 0;
}
#thumbs .swiper-slide {
  width: 20%;
  height: 100%;
  opacity: 0.2;
  cursor: pointer;
}
#thumbs .swiper-slide:before {
  content:none;
}
#thumbs .swiper-slide-active {
  opacity: 1;
}
</style>

こちらはもともと画像ベースのサンプルコードでしたが今回iframe向けに改造をしています。レスポンシブデザインでも動画プレイヤーの縦横比を保つ仕様としているのでスマートフォンでのデザイン崩れも回避できるかと思います。
 

まとめ

ただ動画を見せるだけでなくおしゃれに演出したいといった場合には重宝する実装サンプルになるかと思いますので、よろしければコピペでお使いいただければと思います。
 

“【コピペで使える】レスポンシブ対応のYouTube動画スライダー実装サンプル” への2件の返信

  1. はじめまして。これぞまさに求めていた内容といった感じで、
    大変参考になりました。
    ところで、もしお時間があれば、一点下記の問題を解決できる
    アイディアをお持ちでないでしょうか?
     動画の再生をし、「停止をせずにそのまま」
     次の動画を観ようとスライドさせると、
     直前に再生していた動画は
     観えていない状態ではあるが再生され続けているので、
     現在アクティブな動画と音が重なってしまう。

    ⇒YoutubeのAPI??と組み合わせて停止させたり、
    サムネイルをスライドするとアクティブでない動画は存在自体を消して
    アクティブになったら復活させる?????というような
    処理をすべきなのでしょうか。

    かなりいろいろな方が望んでいる情報かもしれませんので
    もしいつかお時間があればご教示ください・・!
    不躾なお願い失礼しました。

    1. この度はコメント頂きましてありがとうございます。
      記事の方お役に立ったようで大変嬉しく思います。

      おっしゃいます通り、再生した動画音声が重なってゆくのは改善点ですね・・・。
      YouTubeAPIではJS経由でiframe内の動画の再生コントロールができますので実現性はあると思います。

      できるだけシンプルで汎用性の高いコードの紹介を目指しているので、もしすっきりとした実装ができそうであれば今後反映をしてみたいと思います。
      スライダーの切り替わりを検知して前の動画と現在の動画の判別ができればやりようはありそうですね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です