YouTube動画をモーダルウインドウに表示する方法【HTML/CSS/JavaScript・サンプルコード付き】

モーダルウインドウ
無料ツール
モーダルウインドウを自由に作成

テキスト・表示ボタン・サイズ・余白・角丸・背景色・文字色・影などを設定して、HTML・CSS・JavaScriptを自動生成できます。

モーダルウインドウ作成ツールを使う
新しいタブで開きます

YouTube動画をモーダルウインドウに表示する方法

YouTube動画をモーダルウインドウに表示する方法を紹介します。このサンプルでは、「動画を再生」ボタンをクリックすると画面中央にモーダルウインドウが開き、その中でYouTube動画を再生できます。動画をページ内へ常時表示せず、必要なタイミングだけ大きく表示できるため、ページ全体をすっきり見せながら動画コンテンツを案内できます。

商品やサービスの紹介動画、操作方法を説明する動画、会員サイトの案内動画、ECサイトの商品紹介、Webサイト内のプロモーション動画など、ページの内容を見ながら必要に応じて動画を開く構成に適しています。モーダルウインドウ内の動画は16:9の比率で表示され、画面幅に合わせて縮小されるため、スマートフォン・タブレット・PCでも利用できます。

HTMLではボタンやモーダルウインドウ、YouTube動画を表示するiframeを配置し、CSSではモーダルの横幅、余白、背景色、角丸、表示アニメーションなどを調整できます。JavaScriptではボタンをクリックしたときにYouTubeの埋め込みURLをiframeへ設定してモーダルを表示し、「閉じる」ボタンを押したときにURLを空へ戻して動画の再生を停止します。表示する動画を変更する場合は、YouTube動画の動画IDを用途に合わせて変更できます。

コードについて 本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。

デモ

YouTube動画モーダル

ボタンを押すとYouTube動画をモーダルウインドウで表示します。

「動画を再生」をクリックするとモーダルウインドウ内でYouTube動画を再生できます。
※ デモではYouTubeのサンプル動画を利用しています。配布用コードでは動画IDを変更してご利用ください。

コードをコピーして使おう!

<!DOCTYPE html>
<html lang="ja">
<head>

  <!-- 文字コード -->
  <meta charset="UTF-8">

  <!-- スマートフォン表示対応 -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- ページタイトル -->
  <title>YouTube動画をモーダルウインドウに表示する方法</title>

  <!-- CSSファイルを読み込み -->
  <link rel="stylesheet" href="style.css">

</head>
<body>

  <!-- YouTube動画モーダルを開く操作エリア -->
  <div class="youtube-modal_wrap">

    <!-- タイトル -->
    <div class="youtube-modal_title">
      YouTube動画モーダル
    </div>

    <!-- 説明文 -->
    <p class="youtube-modal_text">
      ボタンを押すとYouTube動画をモーダルウインドウで表示します。
    </p>

    <!-- YouTube動画を開くボタン -->
    <button
      class="youtube-modal_open"
      type="button"
      data-youtube-modal-open>
      動画を再生
    </button>

  </div>

  <!-- モーダル背景 -->
  <div
    class="youtube-modal_overlay"
    data-youtube-modal-overlay>

    <!-- モーダル本体 -->
    <div
      class="youtube-modal_modal"
      role="dialog"
      aria-modal="true"
      aria-labelledby="youtube-modal-title">

      <!-- モーダルタイトル -->
      <div
        class="youtube-modal_modal-title"
        id="youtube-modal-title">
        YouTube動画
      </div>

      <!-- YouTube動画表示エリア -->
      <div class="youtube-modal_player-wrap">

        <!--
          YouTube動画

          表示する動画はscript.jsで設定する。
          このiframeのsrc属性へ動画URLを直接入力する必要はありません。

          script.js内の
          YOUR_YOUTUBE_VIDEO_ID
          を、表示したいYouTube動画の動画IDへ置き換えてください。
        -->
        <iframe
          class="youtube-modal_player"
          src=""
          title="YouTube動画"
          data-youtube-modal-player
          allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
          allowfullscreen>
        </iframe>

      </div>

      <!-- モーダルを閉じるボタン -->
      <button
        class="youtube-modal_close"
        type="button"
        data-youtube-modal-close>
        閉じる
      </button>

    </div>

  </div>

  <!-- JavaScriptファイルを読み込み -->
  <script src="script.js"></script>

</body>
</html>
コードをコピーする場合 使用するコードのタブを選び、「このタブをコピー」をクリックすると、現在表示中のコードをコピーできます。
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
Q ダウンロードしたけど、これをネット上で動かすにはどうするの?
A

Googleアカウントがあれば、InfinityFreeで無料サーバーを作成して、ダウンロードしたサンプルをネット上で動かせます。

InfinityFreeを初めて利用する場合は①から、すでにサーバーを作成している場合は②へ進んでください。

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLではYouTube動画を開くボタン、モーダルウインドウ、動画を表示するiframeを配置します。CSSでは操作エリアやモーダルのサイズ、背景色、余白、角丸、動画の表示比率、表示時のアニメーションなどを設定し、JavaScriptではボタンをクリックしたときのモーダル表示とYouTube動画の読み込み、閉じたときの動画停止を行います。

YouTube動画そのものをサンプル一式へ含める必要はありません。表示したいYouTube動画の動画IDを利用者自身で確認し、script.js内のYOUR_YOUTUBE_VIDEO_IDへ設定して使用します。YouTubeページのURL全体ではなく、URLから取得した動画IDだけを設定します。

sample/
├── index.html
├── style.css
└── script.js

各ファイルの役割
index.htmlはYouTube動画モーダルのHTML構造を作るファイルです。「YouTube動画モーダル」のタイトル、説明文、「動画を再生」ボタン、モーダル内のタイトル、「閉じる」ボタンなどの表示内容を変更できます。YouTube動画を表示するiframeもこのファイルにありますが、表示する動画のURLはJavaScriptから設定するため、iframeのsrc属性へ動画URLを直接入力する必要はありません。

style.cssは操作エリアとモーダルウインドウのデザインを設定するファイルです。操作エリアやモーダルの横幅、余白、背景色、文字色、ボタンの色、角丸、影、動画表示エリアの比率、モーダル表示時のアニメーションなどを変更できます。

script.jsはモーダルウインドウとYouTube動画の動作を設定するファイルです。表示するYouTube動画の動画IDを設定し、「動画を再生」をクリックすると動画IDからYouTubeの埋め込みURLを作成してiframeへ設定します。モーダルを開いた時点では動画は自動再生されないため、動画プレーヤーの再生ボタンを押すと再生できます。「閉じる」をクリックするとモーダルを非表示にし、iframeのURLを空にして動画の再生を停止します。

設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置します。3つのファイルは同じ階層へ保存してください。次に、YouTubeでモーダルウインドウへ表示したい動画を開き、動画IDを確認します。

通常のYouTube URLがhttps://www.youtube.com/watch?v=YOUR_YOUTUBE_VIDEO_IDの形式の場合は、v=の後ろにある文字列が動画IDです。短縮URLがhttps://youtu.be/YOUR_YOUTUBE_VIDEO_IDの形式の場合は、youtu.be/の後ろにある文字列が動画IDです。

取得した動画IDをscript.js内のYOUR_YOUTUBE_VIDEO_IDと置き換えます。たとえば動画IDが取得できた場合は、const youtubeVideoId="取得した動画ID";のように設定します。YouTubeページのURL全体ではなく、動画IDだけを設定してください。

動画IDを設定したあと、sample/index.htmlをブラウザで開きます。「動画を再生」をクリックするとモーダルウインドウが表示され、設定したYouTube動画が読み込まれます。動画プレーヤーの再生ボタンを押すと動画を再生できます。「閉じる」をクリックするとモーダルが閉じ、再生中の場合は動画の再生も停止します。

カスタマイズできる内容
index.htmlでは「YouTube動画モーダル」のタイトル、説明文、「動画を再生」ボタン、モーダル内の「YouTube動画」というタイトル、「閉じる」ボタンなどの文章を変更できます。

style.cssでは操作エリアとモーダルの横幅、余白、背景色、文字色、ボタンの背景色、角丸、影、動画表示エリアの比率、モーダル表示時のアニメーションなどを変更できます。

script.jsではYOUR_YOUTUBE_VIDEO_IDを別のYouTube動画IDへ置き換えることで、モーダルウインドウに表示する動画を変更できます。JavaScriptでは動画IDを使ってhttps://www.youtube.com/embed/動画IDの形式の埋め込みURLを作成します。このサンプルではautoplay=1を付けていないため、モーダルを開いただけでは動画は自動再生されません。自動再生したい場合は、script.jsで作成している埋め込みURLの末尾に?autoplay=1を追加し、“https://www.youtube.com/embed/”+youtubeVideoId+”?autoplay=1”の形式に変更します。

数値調整
style.css
max-width:760px;
操作エリアの最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。

margin:40px auto;
操作エリアの上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。

padding:32px;
操作エリアの内側余白です。値を大きくすると内容と枠線の間隔が広がり、小さくすると狭くなります。

border-radius:18px;
操作エリアの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

font-size:22px;
操作エリアのタイトルとモーダルタイトルに使用している文字サイズです。値を大きくすると文字が大きくなり、小さくすると小さくなります。

margin:0 0 24px;
操作エリアの説明文の下側余白です。24pxを大きくすると「動画を再生」ボタンとの間隔が広がり、小さくすると狭くなります。

padding:12px 28px;
「動画を再生」ボタンの内側余白です。上下の12pxを大きくするとボタンが高くなり、左右の28pxを大きくすると横に広がります。

padding:20px;
モーダル背景の画面端との余白と、モーダル本体の内側余白に使用しています。それぞれの値を変更すると、画面端との間隔や動画周囲の余白を調整できます。

max-width:900px;
モーダル本体の最大横幅です。値を大きくするとモーダルと動画の表示領域が広がり、小さくすると狭くなります。

margin:0 0 18px;
モーダルタイトルの下側余白です。18pxを大きくすると動画との間隔が広がり、小さくすると狭くなります。

aspect-ratio:16 / 9;
YouTube動画表示エリアの横幅と高さの比率です。このサンプルでは横16・縦9の比率で表示します。

border-radius:12px;
YouTube動画表示エリアの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

margin:18px auto 0;
「閉じる」ボタンの上側余白です。18pxを大きくすると動画との間隔が広がり、小さくすると狭くなります。

animation:youtube-modal_show .3s ease forwards;
モーダルを表示するときのアニメーション時間です。.3sは0.3秒を表し、値を大きくするとゆっくり、小さくすると速く表示されます。

transform:scale(.9);
モーダル表示アニメーション開始時の大きさです。.9は通常サイズの90%を表します。値を小さくすると、表示時の拡大幅が大きくなります。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのモーダル本体にwidth:100%とmax-width:900pxを指定しているため、画面幅が狭くなるとモーダルも自動的に縮小します。YouTube動画表示エリアにはwidth:100%とaspect-ratio:16 / 9を使用しているため、横幅に合わせながら16:9の比率を維持して表示されます。

また、640px以下ではメディアクエリにより操作エリアの余白をpadding:24px 18px;、モーダル本体の余白をpadding:16px;へ変更しています。これにより、スマートフォン・タブレット・PCの画面幅に合わせて利用できます。


こちらもおすすめ


コメント