【コピペで使える】レスポンシブ対応の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向けに改造をしています。レスポンシブデザインでも動画プレイヤーの縦横比を保つ仕様としているのでスマートフォンでのデザイン崩れも回避できるかと思います。
まとめ
ただ動画を見せるだけでなくおしゃれに演出したいといった場合には重宝する実装サンプルになるかと思いますので、よろしければコピペでお使いいただければと思います。
最後にサンプルファイルを用意いたしましたので、以下リンクから名前をつけてファイルを保存でダウンロードしてください。
投稿者プロフィール
- 代表者
-
東海大学工学部を卒業後、東芝情報システム株式会社(旧グループ会社含む)に入社。半導体(SRAM)の開発チームにて、Unix環境でのPerlを用いた業務自動化プログラムの開発など、エンジニアとしての確かな基礎と緻密な論理的思考力を培う。
その後、東証上場企業である株式会社ザッパラスへ。Web・モバイルの最前線で、数多くのユーザーに愛されるコンテンツ制作業務に従事。ここで「ユーザー目線に立った魅力的なWebコンテンツの企画・制作ノウハウ」を深く学ぶ。
開発・システム側から見た「堅牢なロジック」と、制作・ユーザー側から見た「伝わるコンテンツ」の双方を実務で経験した強みを活かし、フリーランスとして独立。
現在は、ウイングアーク1st株式会社の「データのじかん」運営チームに参画するなど、大手・中小企業のWeb運営・開発パートナーとして活動。完全在宅でありながら、固定IPの完備や厳格なセキュリティポリシーの遵守を徹底し、企業のインフラや本番環境を安全に支える「チームの一員」として高い信頼を得ています。
見た目の美しさはもちろんのこと、内部の構造やWordPressのカスタマイズ、運用・セキュリティまでを見据えた、技術的バックボーンのある高品質なWebサイト・システム制作をワンストップでご提供しています。








初心者です。
勉強のため、コピペで同じものを作ってみました。
形は同じなのにスライドの矢印を押しても動きません。
サムネイルは、表示されている動画のモノ含め3つとも白がかっています。
Swiperが動かないときの対処法を説明してある他サイト等見ても原因がわからず。。。
コピペは間違いないですし、htmlファイルの書き方も配置は同じになっているのでたぶんあっていると思うのですが。。。何が原因なのでしょうか。。。
初心者すぎるコメントで申し訳ありません。
コメントありがとうございます。
以下に実際に動作が確認できるサンプルファイルを用意いたしましたのでこちらを参考に実装頂ければと思います。
https://tadworks.jp/samplecodes/swiper_sample.html
よろしくお願いいたします。
丁寧なご対応、感謝いたします。
頂いたサンプルファイルを参考にさせていただきます!
こちらよろしくお願いいたします!
不明点などあればお問合せ頂ければと思います。
はじめまして。これぞまさに求めていた内容といった感じで、
大変参考になりました。
ところで、もしお時間があれば、一点下記の問題を解決できる
アイディアをお持ちでないでしょうか?
動画の再生をし、「停止をせずにそのまま」
次の動画を観ようとスライドさせると、
直前に再生していた動画は
観えていない状態ではあるが再生され続けているので、
現在アクティブな動画と音が重なってしまう。
⇒YoutubeのAPI??と組み合わせて停止させたり、
サムネイルをスライドするとアクティブでない動画は存在自体を消して
アクティブになったら復活させる?????というような
処理をすべきなのでしょうか。
かなりいろいろな方が望んでいる情報かもしれませんので
もしいつかお時間があればご教示ください・・!
不躾なお願い失礼しました。
この度はコメント頂きましてありがとうございます。
記事の方お役に立ったようで大変嬉しく思います。
おっしゃいます通り、再生した動画音声が重なってゆくのは改善点ですね・・・。
YouTubeAPIではJS経由でiframe内の動画の再生コントロールができますので実現性はあると思います。
できるだけシンプルで汎用性の高いコードの紹介を目指しているので、もしすっきりとした実装ができそうであれば今後反映をしてみたいと思います。
スライダーの切り替わりを検知して前の動画と現在の動画の判別ができればやりようはありそうですね。