YouTube動画をアコーディオンに表示する方法
YouTube動画をアコーディオンに表示する方法を紹介します。このサンプルでは、HTMLのiframe要素でYouTube動画を埋め込み、見出し部分をクリックすると動画が表示されるアコーディオンを作成します。初期状態では動画を非表示にしておき、「YouTube動画を表示」をクリックするとアコーディオンが開き、もう一度クリックすると閉じるシンプルな構成です。
商品やサービスの紹介ページ、操作方法を説明するページ、会員サイトのマニュアル、ブログの記事など、必要なときだけYouTube動画を表示したい場面で利用できます。動画を常に表示せずアコーディオン内へまとめられるため、文章やほかのコンテンツと組み合わせながらページを整理して表示できます。
HTMLではアコーディオンの見出しやYouTube動画の埋め込みURLを変更でき、CSSでは横幅、余白、背景色、枠線、角丸などを調整できます。JavaScriptではクリック時にクラスを切り替えてアコーディオンを開閉します。動画部分には16:9の比率を設定しているため、スマートフォン・タブレット・PCの画面幅に合わせて縮小しながら表示できます。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
見出しをクリックすると、YouTube動画を表示できます。
「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-accordion_wrap">
<!-- タイトル -->
<div class="youtube-accordion_title">
YouTube動画をアコーディオンに表示
</div>
<!-- 説明文 -->
<p class="youtube-accordion_text">
見出しをクリックすると、YouTube動画を表示できます。
</p>
<!-- アコーディオン -->
<div class="youtube-accordion_item">
<!-- 開閉ボタン -->
<button
class="youtube-accordion_button"
type="button">
YouTube動画を表示
</button>
<!-- 開閉する内容 -->
<div class="youtube-accordion_content">
<!-- YouTube動画 -->
<div class="youtube-accordion_video">
<!-- YouTube動画:動画IDを表示したい動画のIDへ変更してください -->
<iframe
src="https://www.youtube.com/embed/動画ID"
title="YouTube video"
allowfullscreen>
</iframe>
</div>
</div>
</div>
</div>
<!-- JavaScriptファイル -->
<script src="script.js"></script>
</body>
</html>
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
ファイル構成と設置方法
このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLではアコーディオンとYouTube動画を埋め込むiframeを配置し、CSSではアコーディオンや動画の表示サイズを整えます。JavaScriptでは「YouTube動画を表示」をクリックしたときにis-openクラスを切り替え、動画を開閉します。
このサンプルでは、アコーディオンを開いてもYouTube動画は自動再生されません。動画を再生する場合は、アコーディオンを開いたあとにYouTube動画内の再生ボタンをクリックします。自動再生したい場合は、iframeの埋め込みURLへ?autoplay=1&mute=1を追加できます。ただし、ブラウザの自動再生制限によって、音声付きの自動再生はブロックされる場合があるため、mute=1を指定してミュート状態で自動再生する方法が適しています。
sample/
├── index.html
├── style.css
└── script.js
各ファイルの役割
index.htmlはアコーディオンとYouTube動画を構成するファイルです。「YouTube動画をアコーディオンに表示」のタイトル、説明文、開閉ボタンの文章を変更できます。表示するYouTube動画は、iframeのsrcに設定している埋め込みURLを変更します。
style.cssはアコーディオン全体のデザインとYouTube動画の表示領域を設定するファイルです。全体の横幅、余白、背景色、枠線、角丸、ボタン、開閉記号などを変更できます。動画部分にはaspect-ratio:16/9;を指定し、16:9の比率で表示します。
script.jsはアコーディオンを開閉するファイルです。開閉ボタンをクリックすると、アコーディオンの親要素へis-openクラスを追加または削除します。クラスの状態に応じて、YouTube動画の表示と非表示が切り替わります。
設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを同じ階層で配置します。そのあとsample/index.htmlをブラウザで開いてください。「YouTube動画を表示」をクリックするとアコーディオンが開いて動画が表示され、もう一度クリックすると閉じます。初期設定では動画は自動再生されないため、動画内の再生ボタンをクリックすると再生が始まります。
YouTube動画の表示方法・動画IDの確認方法
表示するYouTube動画は、index.htmlにあるiframeのsrcを変更して設定します。YouTubeの通常の動画ページURLをそのままiframeへ入力するのではなく、URLから「動画ID」を確認し、YouTubeの埋め込み用URLへ設定します。
まず、表示したいYouTube動画をブラウザで開き、アドレスバーに表示されているURLを確認してください。通常のYouTube動画では、次のようなURLになっています。
https://www.youtube.com/watch?v=mj0vxJuMD0A
このURLでは、v=より後ろにあるmj0vxJuMD0Aの部分が動画IDです。動画によってこの文字列は異なるため、表示したい動画のURLから動画IDを確認してください。
確認した動画IDを、次の埋め込み用URLの「動画ID」の部分へ設定します。
https://www.youtube.com/embed/動画ID
先ほどのmj0vxJuMD0Aを使用する場合は、次のようになります。
https://www.youtube.com/embed/mj0vxJuMD0A
最後に、index.htmlのiframeにあるsrcを、この埋め込み用URLへ変更します。
<iframe src="https://www.youtube.com/embed/mj0vxJuMD0A" title="YouTube video" allowfullscreen></iframe>
保存後にsample/index.htmlをブラウザで開き、「YouTube動画を表示」をクリックしてください。指定したYouTube動画がアコーディオン内に表示されれば設定完了です。
YouTube動画を自動再生する方法
アコーディオンを開いたときではなく、ページを読み込んだ時点からYouTube動画を自動再生する設定にしたい場合は、iframeの埋め込みURLへautoplay=1を追加します。また、多くのブラウザでは音声付き動画の自動再生が制限されているため、mute=1も追加してミュート状態で再生します。
通常の埋め込みURLが次の場合です。
https://www.youtube.com/embed/mj0vxJuMD0A
自動再生する場合は次のように変更します。
https://www.youtube.com/embed/mj0vxJuMD0A?autoplay=1&mute=1
iframeでは次のように設定します。
<iframe src="https://www.youtube.com/embed/mj0vxJuMD0A?autoplay=1&mute=1" title="YouTube video" allow="autoplay; encrypted-media" allowfullscreen></iframe>
autoplay=1は動画の自動再生を有効にする設定、mute=1は動画をミュート状態にする設定です。また、iframeのallow属性へautoplayを指定します。
なお、このサンプルではiframe自体が最初からページ内へ読み込まれており、CSSでアコーディオン部分を非表示にしています。そのため、この方法で自動再生を設定すると「YouTube動画を表示」をクリックした瞬間に再生を開始するのではなく、ページを読み込んだ時点で非表示の動画が再生される場合があります。アコーディオンを開いた瞬間から動画を自動再生したい場合は、JavaScriptでアコーディオンを開いたときにiframeのsrcを設定する処理が別途必要です。
カスタマイズできる内容
index.htmlではタイトル、説明文、開閉ボタンの文章、表示するYouTube動画を変更できます。別の動画へ変更するときは、iframeのsrcにある動画IDを変更してください。また、埋め込みURLへ?autoplay=1&mute=1を追加すると、自動再生を設定できます。
style.cssではアコーディオン全体の横幅、余白、背景色、枠線、角丸、文字色、動画周囲の余白、動画の角丸などを変更できます。また、閉じている状態では「+」、開いている状態では「-」を表示する設定も変更できます。
数値調整
style.css
max-width:700px;
アコーディオン全体の最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。
margin:40px auto;
アコーディオン全体の上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。
padding:32px;
アコーディオン全体の内側余白です。値を大きくすると内容と外側の枠線との間隔が広がります。
border-radius:18px;
アコーディオン全体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
font-size:22px;
タイトルの文字サイズです。値を大きくするとタイトルが大きくなり、小さくすると小さくなります。
margin:0 0 24px;
説明文の下側余白です。24pxを大きくするとアコーディオンとの間隔が広がり、小さくすると狭くなります。
border-radius:12px;
アコーディオンと動画に設定している角丸です。値を大きくすると丸みが強くなり、小さくすると角張った表示になります。
padding:16px 18px;
開閉ボタンの内側余白です。上下の16pxを大きくするとボタンが高くなり、左右の18pxを大きくすると文字と端の間隔が広がります。
padding:18px;
YouTube動画周囲の内側余白です。値を大きくすると動画とアコーディオンの枠との間隔が広がり、小さくすると狭くなります。
aspect-ratio:16/9;
YouTube動画を表示する領域の縦横比です。このサンプルでは16:9の比率で動画を表示します。
@media (max-width:640px)
画面幅640px以下でスマートフォン向けの余白へ切り替える基準です。padding:24px 18px;に変更して、狭い画面でも内容を表示しやすくしています。
レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%とmax-width:700pxによって、アコーディオン全体が画面幅に合わせて縮小します。YouTube動画もwidth:100%とaspect-ratio:16/9によって横幅に合わせてサイズが変化します。また、640px以下では全体の内側余白をpadding:24px 18px;へ変更しているため、スマートフォン・タブレット・PCで利用できます。
コメント