JavaScript PR

modaal.jsを使って複数のYouTube動画をモーダル表示する方法

記事内に商品プロモーションを含む場合があります

modaal.jsを使って複数のYouTube動画をモーダル表示する方法をご紹介します。
リンククリックでYouTubeの埋め込み動画(iframe)をモーダル表示します。

modaal.jsを使って複数のYouTube動画をモーダル表示するCSS記述

※modaal.min.cssファイルを読み込みます。モーダルエリア(#modalarea)とモーダル表示時(.modaal-container)幅やcloseボタン(.modaal-close)のCSS記述です。必要に応じて変更して下さい。

<link rel="stylesheet" type="text/css" href="modaal.min.css">
<style>
body {
  font-size: 16px;
  text-align: center;
}
h1{
  text-align: center;
  font-size: 20px;
  line-height: 1.6em;
  padding-top: 20px;
}
p{
  padding-bottom: 10px;
  font-size: 18px;
}
.modalarea{
  display: none;
}
.modaal-container{
  max-width: 90%;
  text-align: center;
}
.modaal-close:after, 
.modaal-close:before{
  background:#ccc;  
}
.modaal-close:focus:after,
.modaal-close:focus:before,
.modaal-close:hover:after,
.modaal-close:hover:before{
  background:#333;
}
</style>

modaal.jsを使って複数のYouTube動画をモーダル表示するHTML記述

※モーダルエリア(class=”modalarea”)とモーダル表示用リンク(class=”modal”)を2箇所用意します。

<h1>modaal.jsを使って複数のYouTube動画をモーダル表示</h1>
<p>以下のリンクをクリックするとYouTubeの埋め込み動画(iframe)をモーダル表示します。</p>


<div><a href="#yt1" class="modal">YouTube動画をモーダル表示1</a></div>
<br>
<div><a href="#yt2" class="modal">YouTube動画をモーダル表示2</a></div>
  
<div id="yt1" class="modalarea"></div>
<div id="yt2" class="modalarea"></div>

modaal.jsを使って複数のYouTube動画をモーダル表示するJavaScriptの記述

※jquery.min.js(v1.11.2)、modaal.min.jsファイルを読み込みます。$(“モーダル表示トリガーリンクclass”).modaal({オプション})を記述します。オプションのモーダル表示時の処理(before_open)時にモーダル表示ターゲットidを取得しターゲットidによってYouTube埋め込み動画(iframe)をモーダルエリアに表示します。 モーダルclose時の処理(before_open)時にモーダルエリアのYouTube埋め込み動画(iframe)を削除します。

<script src="jquery.js"></script>
<script src="modaal.min.js"></script>
<script type="text/javascript">
$(function(){
  $(".modal").modaal({
    start_open:false,
    overlay_close:true,
    before_open:function(){ //モーダル表示時の処理
      var ss = JSON.parse(JSON.stringify($(this).attr("scope"))).source;  //モーダル表示ターゲットidを取得
      //モーダル表示ターゲットidによってYouTube埋め込み動画(iframe)をモーダルエリアに表示
      if(ss == "#yt1"){
        $('#yt1').html('<iframe width="100%" height="490" src="https://www.youtube.com/embed/d5VXB-UxTiE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>');
      }else if(ss == "#yt2"){
        $('#yt2').html('<iframe width="100%" height="490" src="https://www.youtube.com/embed/yyCVaP2xhAU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>');
      }
      $('html').css('overflow-y','hidden');
    },
    after_close:function(){ //モーダルclose時の処理
      $('#yt1,#yt2').html('');  //モーダルエリアのYouTube埋め込み動画(iframe)を削除
      $('html').css('overflow-y','scroll');
    }
  });
});
</script>

modaal.jsを使って複数のYouTube動画をモーダル表示するデモページ

modaal.jsを使って複数のYouTube動画をモーダル表示するデモページ

参考ページ:modaal.jsとjquery.cookie.jsを使ってモーダルの再表示期間を設定する方法


 
※流用される場合は自己責任でお願いします。
 デモページheadタグ内のGoogleアナリティクスタグは流用しないで下さい。