モーダルウィンドウ(LightBox的なポップアップ)でYoutubeを開いた時に自動的にYoutubeの動画がスタートするって、なかなかめんどくさいみたいで…
モーダルウィンドウ系のjQueryのライブラリだと結構めんどくさそうだったので、YouTube Player iframe APIを利用した実装方法のメモ
【HTML】
<div class="youtube">
<a id="modal-open" href="">
<img src="img/youtube_thm.png" alt="サムネイル画像">
</a>
</div>
【jQuery】
$(function(){
'use scrict';
//プレイヤー変数
var player;
//オブジェクト生成
function youtubeAPIInit() {
var scriptTag = document.createElement('script');
scriptTag.src = "https://www.youtube.com/iframe_api";
var fsTag = document.getElementsByTagName('script')[0];
fsTag.parentNode.insertBefore(scriptTag, fsTag);
window.onYouTubeIframeAPIReady = function(){
player = new YT.Player('player', {
height:'540',
width:'960',
videoId:'OmsAkXakEuA’, ←Youtubeの動画ID
playerVars:{
autohide:1,
controls:1,
modestbranding:1,
iv_load_policy:3,
showinfo:0,
rel:0,
autoplay:1 ←自動再生するパラメーター
}
});
};
}
//モーダル
var modal = {}, $lay, $content;
modal.inner = function() {
if($("#modal-overlay")[0]) return false;
$("body").append('<div id="modal-overlay"></div>');
$lay = $("#modal-overlay");
$content = $("#modal-content");
$lay.fadeIn("slow");
youtubeAPIInit();
this.resize();
$content.fadeIn("fast");
$lay.unbind().click(function() {
player.pauseVideo();
$content.add($lay).fadeOut("fast",function(){
$lay.remove();
});
});
};
//リサイズ処理
modal.resize = function(){
var $winWidth = $(window).width();
var $winHeight = $(window).height();
var $contentOuterWidth = $("#modal-content").outerWidth();
var $contentOuterHeight = $("#modal-content").outerHeight();
$("#modal-content").css({
"left": (($winWidth - $contentOuterWidth) / 2) + "px",
"top": (($winHeight - $contentOuterHeight) / 2) + "px"
});
}
//クリック処理
$("#modal-open").click(function(){
modal.inner();
player.playVideo();
});
$(window).resize(modal.resize);
});
aタグのリンク機能を無効にするために、こう書かないといけないかも
【HTML】
<div class="youtube">
<a id="modal-open" href="javascript:;">
<img src="youtube_thm.jpg" alt="サムネイル画像">
</a>
</div>
CSSでモーダル部分の調整
【CSS】
#modal-content{
width:80%;
margin:0;
padding:0;
background:#fff;
position:fixed;
display:none ;
z-index:99999;
}
#modal-content .inner{
position:relative;
width:100%;
padding-top:56.25%;
overflow:hidden;
}
#modal-content .inner #player{
position:absolute;
top:0;
right:0;
width:100%;
height:100%;
}
#modal-overlay{
z-index:9999;
display:none;
position:fixed;
top:0;
left:0;
width:100%;
height:120%;
background-color:rgba( 0,0,0, 0.75 );
}