iframeをアコーディオンに表示する方法
iframeをアコーディオンに表示する方法を紹介します。このサンプルでは、HTMLのiframe要素をアコーディオンの中へ配置し、「iframeを表示」をクリックすると埋め込みコンテンツが表示され、もう一度クリックすると閉じる仕組みを作成します。最初はiframeを非表示にしておけるため、必要なときだけ埋め込みコンテンツを開いて確認できる構成です。
Webサイト内へ別ページや埋め込み可能なコンテンツを掲載したい場合に利用できます。たとえば、説明ページの補足コンテンツや外部ページの埋め込みなどを、常に表示しておくのではなくアコーディオン内へまとめたい場合に便利です。JavaScriptではボタンをクリックしたときにクラスを切り替えるだけのシンプルな処理を使用しているため、基本的なHTML・CSS・JavaScriptで実装できます。
HTMLではiframeのURLやタイトル、説明文、開閉ボタンの文章を変更できます。CSSではアコーディオンの横幅、余白、背景色、枠線、角丸、iframeの高さなどを調整できます。iframeは横幅100%で表示されるため画面幅に合わせて縮小でき、スマートフォン・タブレット・PCでも利用しやすい構成です。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
見出しをクリックすると、iframeの内容を表示できます。
「iframeを表示」をクリックするとiframeが表示され、もう一度クリックすると閉じます。
コードをコピーして使おう!
<!DOCTYPE html>
<html lang="ja">
<head>
<!-- 文字コード -->
<meta charset="UTF-8">
<!-- スマートフォン対応 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- ページタイトル -->
<title>iframeをアコーディオンに表示</title>
<!-- CSSファイル -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- アコーディオン全体 -->
<div class="iframe-accordion_wrap">
<!-- タイトル -->
<div class="iframe-accordion_title">
iframeをアコーディオンに表示
</div>
<!-- 説明文 -->
<p class="iframe-accordion_text">
見出しをクリックすると、iframeの内容を表示できます。
</p>
<!-- アコーディオン -->
<div class="iframe-accordion_item">
<!-- 開閉ボタン -->
<button
class="iframe-accordion_button"
type="button">
iframeを表示
</button>
<!-- 開閉する内容 -->
<div class="iframe-accordion_content">
<!-- iframe -->
<iframe
class="iframe-accordion_frame"
src="ここに表示したいURLを入力"
title="iframe sample">
</iframe>
</div>
</div>
</div>
<!-- JavaScriptファイル -->
<script src="script.js"></script>
</body>
</html>
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
Q ダウンロードしたけど、これをネット上で動かすにはどうするの?
Googleアカウントがあれば、InfinityFreeで無料サーバーを作成して、ダウンロードしたサンプルをネット上で動かせます。
InfinityFreeを初めて利用する場合は①から、すでにサーバーを作成している場合は②へ進んでください。
ファイル構成と設置方法
このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLではアコーディオンとiframeを配置し、CSSではアコーディオン全体やiframe表示領域のサイズ、余白、枠線、角丸などを設定します。JavaScriptでは「iframeを表示」をクリックしたときにis-openクラスを切り替え、iframeの表示と非表示を変更します。
sample/
├── index.html
├── style.css
└── script.js
各ファイルの役割
index.htmlはアコーディオンとiframeを構成するファイルです。「iframeをアコーディオンに表示」のタイトル、説明文、開閉ボタンの文章、iframeへ表示するURLを変更できます。iframeのsrcへ表示したいURLを設定すると、そのページをアコーディオン内へ表示できます。
style.cssはアコーディオン全体とiframe表示領域のデザインを設定するファイルです。全体の最大横幅、余白、背景色、枠線、角丸、ボタン、開閉記号、iframeの高さなどを変更できます。
script.jsはアコーディオンを開閉するファイルです。開閉ボタンをクリックすると、アコーディオンの親要素へis-openクラスを追加または削除します。クラスの状態に応じてiframeの表示と非表示が切り替わります。
設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを同じ階層で配置します。そのあとsample/index.htmlをブラウザで開いてください。「iframeを表示」をクリックするとアコーディオンが開いてiframeが表示され、もう一度クリックすると閉じます。
iframeへ表示するURLの設定方法
iframeへ表示するページは、index.htmlにあるiframeのsrcへ設定します。配布コードでは、利用者が表示したいURLを入力できるように次の形になっています。
src="ここに表示したいURLを入力"
たとえば、表示したいページのURLがhttps://example.com/page/の場合は、次のように変更します。
src="https://example.com/page/"
URLを変更したあとindex.htmlを保存し、sample/index.htmlをブラウザで開いてください。「iframeを表示」をクリックして、指定したページがアコーディオン内へ表示されれば設定完了です。
なお、表示先のWebサイト側でiframeによる埋め込みが許可されていない場合は、正しいURLを指定してもiframe内へ表示できません。その場合は、iframeでの埋め込みが許可されているページを指定してください。
カスタマイズできる内容
index.htmlではタイトル、説明文、開閉ボタンの文章、iframeへ表示するURLを変更できます。別のページへ変更する場合は、iframeのsrcへ新しいURLを設定してください。
style.cssではアコーディオン全体の最大横幅、余白、背景色、枠線、角丸、文字色、iframe周囲の余白、iframe表示領域の高さや角丸などを変更できます。また、閉じている状態では「+」、開いている状態では「-」を表示する設定も変更できます。
数値調整
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;
アコーディオンとiframeに設定している角丸です。値を大きくすると丸みが強くなり、小さくすると角張った表示になります。
padding:16px 18px;
開閉ボタンの内側余白です。上下の16pxを大きくするとボタンが高くなり、左右の18pxを大きくすると文字と端との間隔が広がります。
padding:18px;
iframe周囲の内側余白です。値を大きくするとiframeとアコーディオンの枠との間隔が広がり、小さくすると狭くなります。
height:400px;
PCやタブレットで表示するiframeの高さです。値を大きくすると表示領域が高くなり、小さくすると低くなります。
@media (max-width:640px)
画面幅640px以下でスマートフォン向けの表示へ切り替える基準です。全体の内側余白をpadding:24px 18px;、iframeの高さを300pxへ変更しています。
height:300px;
画面幅640px以下で使用するiframeの高さです。値を変更すると、スマートフォンで表示されるiframe領域の高さが変わります。
レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%とmax-width:700pxによって、アコーディオン全体が画面幅に合わせて縮小します。iframeにもwidth:100%を指定しているため、親要素の横幅に合わせて表示サイズが変化します。また、画面幅640px以下では全体の内側余白をpadding:24px 18px;、iframeの高さを300pxへ変更しているため、スマートフォン・タブレット・PCで利用できます。
コメント