youtubeのカルーセルサムネイル付き、動画再生のようなことがしたい。
◼︎Youtube IFrame Player APIを利用してサムネイル画像クリックで動画再生
↑のリンクのサムネイルがスライドカルーセルになっているようなことがしたいです。
どうすればいいのか、全くわからないので、ヒントだけでもいただけると幸いです。
一応、自分でも色々考えて「slick」を用いて表現できないかと思ったのですが、
イメージしているものではなく、詰まってしまっている状態です。
問題点としては、以下のことが挙げられます。
・slickだと、メイン部分と連動しているので、サムネイル部分をスライドさせるとメインの部分もスライドしてしまう。
・また、スライドさせたあともメイン動画の部分が変わっても、動画が再生され続けてしまう。
(スライドしてメイン動画が変わったら、再生されていた動画は止まってほしい)
理想としては、
◼︎YouTube動画をサムネイルクリックで切り替える
◼︎Youtube IFrame Player APIを利用してサムネイル画像クリックで動画再生
上記2つのサムネイルがカルーセルになっているver.です。
お手数ですが、お力添え願えないでしょうか。
すいませんが、よろしくお願いいたします。
下記、コードは「slick」を用いて表現できないかと、模索したコードです。
参考にはならないかもですが、よろしくおねがいします。
html
1<ul class="slider"> 2 <li id="wrap_movie01"></li> 3 <li id="wrap_movie02"></li> 4 <li id="wrap_movie03"></li> 5 <li id="wrap_movie04"></li> 6 <li id="wrap_movie05"></li> 7 <li id="wrap_movie06"></li> 8 <li id="wrap_movie07"></li> 9 <li id="wrap_movie08"></li> 10 <li id="wrap_movie09"></li> 11</ul> 12<ul class="slider-nav"> 13 <li><img src="http://img.youtube.com/vi/GcfINC1TZv0/mqdefault.jpg" /></li> 14 <li><img src="http://img.youtube.com/vi/sQlu57kj_90/mqdefault.jpg" /></li> 15 <li><img src="http://img.youtube.com/vi/LdFbjQjr_Sg/mqdefault.jpg" /></li> 16 <li><img src="http://img.youtube.com/vi/r8GuIF9f_HM/mqdefault.jpg" /></li> 17 <li><img src="http://img.youtube.com/vi/fWytAH6NteI/mqdefault.jpg" /></li> 18 <li><img src="http://img.youtube.com/vi/impSuIygMiQ/mqdefault.jpg" /></li> 19 <li><img src="http://img.youtube.com/vi/NyUTYwZe_l4/mqdefault.jpg" /></li> 20 <li><img src="http://img.youtube.com/vi/j1hft9Wjq9U/mqdefault.jpg" /></li> 21 <li><img src="http://img.youtube.com/vi/fWytAH6NteI/mqdefault.jpg" /></li> 22</ul> 23
▼slick用のjs
js
1<script> 2$(function(){ 3 var mainSlider = ".slider"; //メインスライダーid 4 var thumbnailSlider = ".slider-nav"; //サムネイルスライダーid 5 6 $(mainSlider).slick({ 7 // autoplay: true, 8 speed: 1000, 9 arrows: false, 10 asNavFor: thumbnailSlider 11 }); 12 $(thumbnailSlider).slick({ 13 slidesToShow: 3, 14 speed: 1000, 15 asNavFor: mainSlider 16 }); 17 //#thumbnail_sliderでクリックしたスライドをカレントにする 18 $(thumbnailSlider+" .slick-slide").on('click',function(){ 19 var index = $(this).attr("data-slick-index"); 20 $(thumbnailSlider).slick("slickGoTo",index,false); 21 }); 22}); 23</script> 24
▼youtube APIなどの動画系の設定js
js
1//IFrame Player API の読み込み 2var tag = document.createElement('script'); 3tag.src = "https://www.youtube.com/iframe_api"; 4var firstScriptTag = document.getElementsByTagName('script')[0]; 5firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 6 7// プレーヤーを配列宣言します 8var ytPlayer = []; 9// 各動画のIDと要素のIDを格納します。 10var ytData = [ 11 { 12 id: 'GcfINC1TZv0', 13 div_id: 'wrap_movie01' 14 }, { 15 id: 'sQlu57kj_90', 16 div_id: 'wrap_movie02' 17 }, { 18 id: 'LdFbjQjr_Sg', 19 div_id: 'wrap_movie03' 20 }, { 21 id: 'r8GuIF9f_HM', 22 div_id: 'wrap_movie04' 23 }, { 24 id: 'fWytAH6NteI', 25 div_id: 'wrap_movie05' 26 }, { 27 id: 'impSuIygMiQ', 28 div_id: 'wrap_movie06' 29 }, { 30 id: 'NyUTYwZe_l4', 31 div_id: 'wrap_movie07' 32 }, { 33 id: 'j1hft9Wjq9U', 34 div_id: 'wrap_movie08' 35 }, { 36 id: '9ZG9G3v1RPk', 37 div_id: 'wrap_movie09' 38 } 39]; 40 41// 各プレーヤーの埋め込み 42function onYouTubeIframeAPIReady() { 43 for(var i = 0; i < ytData.length; i++) { 44 ytPlayer[i] = new YT.Player(ytData[i]['div_id'], { 45 videoId: ytData[i]['id'], 46 playerVars: { 47 rel: 0, 48 showinfo: 0, 49 // autoplay:1, 50 controls:0, 51 loop:1, 52 playlist:ytData[i]['id'],//★loopする場合はplaylistを設定する必要がある 53 playsinline: 1//←★スマホ対応 54 }, 55 events: { 56 'onReady': onPlayerReady 57 } 58 }); 59 } 60} 61 62// 各プレーヤー準備完了後の処理 63function onPlayerReady(e) { 64 for (var i = 0; i < ytData.length; i++) { 65 if(e.target.getIframe().id == ytData[i]['div_id']) { 66 console.log(ytData[i]['div_id'] + 'のプレーヤー準備完了しました。'); 67 } 68 }; 69 // e.target.mute();//★autoplayする場合はミュートする必要がある 70 e.target.playVideo(); 71} 72
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。