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

ドロップダウンメニュー

YouTube動画をドロップダウンメニューに表示する方法

YouTube動画をドロップダウンメニューに表示する方法を紹介します。このサンプルでは、「動画メニュー」ボタンをクリックすると3件の動画タイトルがドロップダウンメニューとして表示され、見たい動画のタイトルをクリックすると、その項目の直下へYouTube動画を展開します。もう一度同じタイトルをクリックすると動画を閉じることができ、別のタイトルを選択した場合は開いていた動画を閉じて選択した動画へ切り替えます。

商品やサービスの紹介ページ、オンライン講座、操作方法をまとめたページ、会員サイトなど、複数のYouTube動画をコンパクトなメニューから選択できるようにしたい場面で利用できます。最初からすべての動画を縦に並べるのではなく、動画タイトルをメニューとしてまとめられるため、利用者はタイトルを確認してから見たい動画だけを展開できます。

HTMLではメニューボタンの文章、3件の動画タイトル、YouTube動画の埋め込みURLを変更できます。CSSではメニューの横幅、余白、背景色、角丸、影、動画の表示サイズなどを調整でき、JavaScriptではドロップダウンメニューの開閉と動画の切り替えを行います。動画は16:9の比率を維持しながらメニューの横幅に合わせて縮小されるため、スマートフォン・タブレット・PCで利用できます。

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

デモ

YouTube動画をドロップダウンメニューに表示

メニューを開き、動画タイトルをクリックするとその項目の下にYouTube動画を表示します。

「動画メニュー」をクリックすると3件の動画タイトルが表示されます。各タイトルをクリックすると、その項目の下にYouTube動画が展開されます。

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

<!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>

  <!-- ドロップダウンメニュー全体 -->
  <div class="youtube-video-dropdown-menu_wrap">

    <!-- タイトル -->
    <div class="youtube-video-dropdown-menu_title">
      YouTube動画をドロップダウンメニューに表示
    </div>

    <!-- 説明文 -->
    <p class="youtube-video-dropdown-menu_text">
      動画メニューから見たいYouTube動画を選択できます。
    </p>

    <!-- メニュー配置エリア -->
    <div class="youtube-video-dropdown-menu_group">

      <div class="youtube-video-dropdown-menu_area">

        <!-- ドロップダウンメニューを開閉するボタン -->
        <button
          class="youtube-video-dropdown-menu_button"
          type="button"
          data-youtube-video-dropdown-menu-button="">
          動画メニュー
          <span class="youtube-video-dropdown-menu_arrow">▼</span>
        </button>

        <!-- 動画メニュー -->
        <ul
          class="youtube-video-dropdown-menu_list"
          data-youtube-video-dropdown-menu-list="">

          <!-- 動画1 -->
          <li class="youtube-video-dropdown-menu_item">

            <button
              type="button"
              class="youtube-video-dropdown-menu_video-button"
              data-youtube-video-dropdown-menu-video-button="1">
              動画1:サンプル動画
            </button>

            <div
              class="youtube-video-dropdown-menu_video"
              data-youtube-video-dropdown-menu-video="1">

              <!--
                【YouTube動画の設定方法】

                1. 表示したいYouTube動画を開きます。
                2. 動画URLの「watch?v=」より後ろにある動画IDを確認します。
                3. YOUR_VIDEO_ID_1 を取得した動画IDへ置き換えてください。

                例:
                https://www.youtube.com/watch?v=XXXXXXXXXXX
                ↓
                動画IDは XXXXXXXXXXX
              -->
              <iframe
                class="youtube-video-dropdown-menu_frame"
                src="https://www.youtube.com/embed/YOUR_VIDEO_ID_1"
                title="動画1"
                loading="lazy"
                allowfullscreen>
              </iframe>

            </div>

          </li>

          <!-- 動画2 -->
          <li class="youtube-video-dropdown-menu_item">

            <button
              type="button"
              class="youtube-video-dropdown-menu_video-button"
              data-youtube-video-dropdown-menu-video-button="2">
              動画2:サンプル動画
            </button>

            <div
              class="youtube-video-dropdown-menu_video"
              data-youtube-video-dropdown-menu-video="2">

              <!--
                YOUR_VIDEO_ID_2 を、
                2件目に表示したいYouTube動画の動画IDへ置き換えてください。
              -->
              <iframe
                class="youtube-video-dropdown-menu_frame"
                src="https://www.youtube.com/embed/YOUR_VIDEO_ID_2"
                title="動画2"
                loading="lazy"
                allowfullscreen>
              </iframe>

            </div>

          </li>

          <!-- 動画3 -->
          <li class="youtube-video-dropdown-menu_item">

            <button
              type="button"
              class="youtube-video-dropdown-menu_video-button"
              data-youtube-video-dropdown-menu-video-button="3">
              動画3:サンプル動画
            </button>

            <div
              class="youtube-video-dropdown-menu_video"
              data-youtube-video-dropdown-menu-video="3">

              <!--
                YOUR_VIDEO_ID_3 を、
                3件目に表示したいYouTube動画の動画IDへ置き換えてください。
              -->
              <iframe
                class="youtube-video-dropdown-menu_frame"
                src="https://www.youtube.com/embed/YOUR_VIDEO_ID_3"
                title="動画3"
                loading="lazy"
                allowfullscreen>
              </iframe>

            </div>

          </li>

        </ul>

      </div>

    </div>

  </div>

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

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

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLではドロップダウンメニューと3件のYouTube動画を表示するiframeを作成し、CSSではメニューや動画表示エリアのデザインを設定します。JavaScriptでは「動画メニュー」の開閉と、各動画タイトルをクリックしたときの動画表示を制御します。

YouTube動画はiframeの埋め込みURLを使用して表示します。APIや外部JavaScriptライブラリは使用しません。表示する動画は利用者自身で用意し、index.html内のYOUR_VIDEO_ID_1YOUR_VIDEO_ID_2YOUR_VIDEO_ID_3を、それぞれ表示したいYouTube動画の動画IDへ置き換えて使用します。

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

各ファイルの役割
index.htmlはドロップダウンメニューとYouTube動画の表示内容を構成するファイルです。「動画メニュー」のボタン、3件の動画タイトル、動画を表示するiframeが含まれています。動画タイトルの文章を変更できるほか、YOUR_VIDEO_ID_1YOUR_VIDEO_ID_2YOUR_VIDEO_ID_3へ表示したいYouTube動画の動画IDを設定できます。

style.cssはドロップダウンメニューと動画表示エリアのデザインを設定するファイルです。全体の横幅や余白、背景色、ボタンの色、角丸、メニューの影、動画表示エリアのサイズなどを変更できます。

script.jsはドロップダウンメニューと動画表示を制御するファイルです。「動画メニュー」をクリックするとメニューを開閉し、メニュー内の動画タイトルをクリックすると対応する動画を開閉します。別の動画を選択した場合は、それまで開いていた動画を閉じて選択した動画を表示します。

設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置します。次に、表示したいYouTube動画を開き、動画のURLから動画IDを確認してください。通常の動画URLがhttps://www.youtube.com/watch?v=XXXXXXXXXXXの場合、watch?v=より後ろにあるXXXXXXXXXXXの部分が動画IDです。

1件目の動画IDはindex.htmlのYOUR_VIDEO_ID_1、2件目はYOUR_VIDEO_ID_2、3件目はYOUR_VIDEO_ID_3へ設定します。それぞれhttps://www.youtube.com/embed/動画IDの形式でiframeのsrc属性に設定されます。動画タイトルも、それぞれ設定した動画の内容に合わせて変更してください。

3件の動画IDを設定したあと、sample/index.htmlをブラウザで開きます。「動画メニュー」をクリックすると3件の動画タイトルが表示され、見たい動画タイトルをクリックすると、その項目の下にYouTube動画が表示されます。同じ動画タイトルをもう一度クリックすると動画を閉じられます。

カスタマイズできる内容
index.htmlでは、ページ内のタイトル、説明文、「動画メニュー」の文字、3件の動画タイトル、YouTube動画IDを変更できます。表示したい動画に合わせてYOUR_VIDEO_ID_1YOUR_VIDEO_ID_2YOUR_VIDEO_ID_3を書き換えてください。

style.cssでは、全体の最大横幅、余白、背景色、枠線、角丸、メニューボタンの色、動画タイトルの文字サイズ、ドロップダウンメニューの横幅や影などを変更できます。JavaScriptでは動画番号とHTMLのdata-youtube-video-dropdown-menu-videoを対応させているため、動画タイトルと動画表示エリアの番号は同じ値を使用します。

数値調整
style.css
max-width:700px;
サンプル全体の最大横幅です。値を大きくすると全体が横に広がり、小さくするとコンパクトになります。

margin:40px auto;
サンプル全体の上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。

padding:32px;
サンプル全体の内側余白です。値を大きくすると内容と枠線の間隔が広がります。

border-radius:18px;
サンプル全体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

font-size:22px;
タイトルの文字サイズです。値を大きくするとタイトルが大きく表示されます。

margin:0 0 24px;
説明文の下側余白です。24pxを大きくすると説明文と動画メニューの間隔が広がります。

max-width:420px;
ドロップダウンメニューの最大横幅です。値を大きくするとメニューが横に広がり、小さくすると狭くなります。

min-height:52px;
「動画メニュー」ボタンの最小高さです。値を大きくするとボタンが高くなります。

padding:14px 18px;
「動画メニュー」ボタンの内側余白です。14pxは上下、18pxは左右の余白を表します。

border-radius:10px;
「動画メニュー」ボタンとドロップダウンメニューの角丸です。値を大きくすると丸みが強くなります。

top:calc(100% + 10px);
ドロップダウンメニューを開閉ボタンから10px下へ離して表示します。10pxを大きくするとボタンとメニューの間隔が広がります。

padding:8px;
ドロップダウンメニュー内側の余白です。値を大きくすると動画タイトルとメニュー外枠の間隔が広がります。

margin-top:4px;
2件目以降の動画項目との間隔です。値を大きくすると各項目の間隔が広がります。

padding:12px 14px;
動画タイトルボタンの内側余白です。12pxは上下、14pxは左右の余白を表します。

font-size:15px;
動画タイトルボタンの文字サイズです。値を大きくすると文字が大きくなります。

aspect-ratio:16 / 9;
YouTube動画の縦横比です。このサンプルでは16:9の比率で動画を表示します。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%max-widthによって、サンプル全体とドロップダウンメニューが画面幅に合わせて縮小されます。YouTube動画もwidth:100%aspect-ratio:16 / 9によって、横幅に合わせながら16:9の比率を維持して表示されます。

また、画面幅640px以下ではpadding:24px 18px;へ変更し、スマートフォンで左右の余白が広くなりすぎないよう調整しています。スマートフォン・タブレット・PCで利用できる構成です。


こちらもおすすめ


コメント