iframeをタブ切り替えに表示する方法【HTML/CSS/JavaScript・サンプルコード付き】

タブ切り替え
無料ツール
タブ切り替えを自由に作成

タブ項目・サイズ・色・余白・初期表示などを設定して、HTML・CSS・JavaScriptを自動生成できます。

タブ切り替え作成ツールを使う
新しいタブで開きます

iframeをタブ切り替えに表示する方法

iframeをタブ切り替えに表示する方法を紹介します。このサンプルでは、3つのタブを用意し、クリックしたタブに対応するWebページだけをiframe内へ表示します。複数のWebページを同じ場所で切り替えて見せられるため、ページごとにiframeを縦へ並べる必要がなく、表示エリアをコンパクトにまとめられます。

サービス紹介ページや管理画面、会員サイト、Webサイト内の案内ページなど、複数のWebページを1つの表示エリアへまとめたい場合に利用できます。初期状態では「ページ1」を表示し、「ページ2」「ページ3」のタブをクリックするとJavaScriptで表示対象を切り替えます。選択中のタブは青色になるため、現在どのページを表示しているのかも確認しやすい構成です。

HTMLではタブ名、iframeのURL、表示するページ数を変更でき、CSSでは全体の横幅、余白、タブの色、角丸、iframeの高さなどを調整できます。iframeは横幅100%で表示されるため画面幅に合わせて縮小でき、スマートフォン・タブレット・PCで利用できます。HTML・CSS・バニラJavaScriptだけで実装できる、複数の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-tab-switch_wrap">

    <!-- タイトル -->
    <div class="iframe-tab-switch_title">
      iframeをタブ切り替えで表示
    </div>

    <!-- 説明文 -->
    <p class="iframe-tab-switch_text">
      タブをクリックすると、対応するページへ切り替わります。
    </p>

    <!-- タブ -->
    <div class="iframe-tab-switch_tabs">

      <button class="iframe-tab-switch_tab is-active" type="button" data-tab="page1">
        ページ1
      </button>

      <button class="iframe-tab-switch_tab" type="button" data-tab="page2">
        ページ2
      </button>

      <button class="iframe-tab-switch_tab" type="button" data-tab="page3">
        ページ3
      </button>

    </div>

    <!-- ページ1 -->
    <div class="iframe-tab-switch_panel is-active" data-panel="page1">

      <p class="iframe-tab-switch_label">
        ページ1
      </p>

      <div class="iframe-tab-switch_frame">

        <!-- src属性へ表示したいページのURLを指定 -->
        <iframe
          src="about:blank"
          title="ページ1">
        </iframe>

      </div>

    </div>

    <!-- ページ2 -->
    <div class="iframe-tab-switch_panel" data-panel="page2">

      <p class="iframe-tab-switch_label">
        ページ2
      </p>

      <div class="iframe-tab-switch_frame">

        <!-- src属性へ表示したいページのURLを指定 -->
        <iframe
          src="about:blank"
          title="ページ2">
        </iframe>

      </div>

    </div>

    <!-- ページ3 -->
    <div class="iframe-tab-switch_panel" data-panel="page3">

      <p class="iframe-tab-switch_label">
        ページ3
      </p>

      <div class="iframe-tab-switch_frame">

        <!-- src属性へ表示したいページのURLを指定 -->
        <iframe
          src="about:blank"
          title="ページ3">
        </iframe>

      </div>

    </div>

  </div>

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

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

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

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

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLではタブとiframe表示エリアを作成し、CSSでは全体のレイアウトやタブ、iframeのデザインを設定します。JavaScriptではクリックされたタブに対応するiframeパネルへ表示を切り替えます。iframeへ表示するページ自体はサンプルに含まれていないため、利用する際は表示したいページのURLを各iframeのsrc属性へ指定してください。

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

各ファイルの役割
index.htmlはタブとiframe表示エリアを構成するファイルです。「ページ1」「ページ2」「ページ3」のタブ名やラベルを変更できます。各iframeのsrc属性には初期状態でabout:blankを指定しているため、実際に使用するときは利用者自身が表示したいページのURLへ変更します。タブのdata-tabとパネルのdata-panelを同じ値にすることで、それぞれのタブとパネルを対応させています。

style.cssはタブ切り替え全体のデザインを設定するファイルです。全体の横幅や余白、背景色、枠線、角丸、タブの通常時・選択時の色、パネルの余白、iframe表示エリアの高さなどを変更できます。画面幅640px以下では余白とiframeの高さを小さくする設定も行っています。

script.jsはタブをクリックしたときの表示切り替えを行うファイルです。クリックされたタブのdata-tabを取得し、すべてのタブとパネルからis-activeクラスを削除したあと、選択したタブと対応するパネルへis-activeクラスを追加します。

設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを同じ階層で配置します。3つのファイルを保存したあと、sample/index.htmlをブラウザで開いてください。

配布コードにはiframeへ表示するWebページは含まれていません。index.htmlにある3つのiframeのsrc="about:blank"を、それぞれ表示したいページのURLへ変更して使用します。URLを設定した状態で「ページ1」「ページ2」「ページ3」をクリックすると、対応するiframeパネルへ表示が切り替わります。なお、表示先のWebサイトがiframeによる埋め込みを許可していない場合、そのページはiframe内へ表示できません。

カスタマイズできる内容
index.htmlでは、タイトル、説明文、各タブの文字、各パネルのラベル、iframeへ指定するURLを変更できます。タブを追加・変更する場合は、タブ側のdata-tabと対応するパネル側のdata-panelを同じ値にします。

style.cssでは、全体の最大横幅、余白、背景色、枠線、角丸、タブの背景色と文字色、タブ同士の間隔、パネルの余白、iframeの高さや角丸を変更できます。

数値調整
style.css
padding:40px 20px;
ページ全体の上下・左右の余白です。40pxが上下、20pxが左右の余白を表します。値を大きくすると画面端との間隔が広がります。

max-width:700px;
タブ切り替え全体の最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。

margin:40px auto;
タブ切り替え全体の上下余白です。40pxを大きくすると上下の間隔が広がります。

padding:32px;
タブ切り替え全体の内側余白です。値を大きくすると内容と外側の枠線との間隔が広がります。

border-radius:18px;
タブ切り替え全体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

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

margin:0 0 24px;
説明文の下側余白です。24pxを大きくすると説明文とタブの間隔が広がります。

padding:14px;
タブの内側余白です。値を大きくするとタブが大きくなります。

border-radius:12px 12px 0 0;
タブ上部の角丸です。12pxを大きくすると上側の丸みが強くなります。

margin-left:6px;
2つ目以降のタブとの間隔です。値を大きくするとタブ同士の間隔が広がります。

padding:18px;
iframeパネルの内側余白です。値を大きくするとiframeやラベルとパネルの枠線との間隔が広がります。

font-size:18px;
iframe上部に表示するラベルの文字サイズです。値を大きくすると文字が大きくなります。

height:500px;
iframe表示エリアの高さです。値を大きくすると表示領域が高くなり、小さくすると低くなります。

@media (max-width:640px)
画面幅640px以下でスマートフォン向けの設定へ切り替える基準です。

height:360px;
画面幅640px以下で使用するiframe表示エリアの高さです。値を大きくするとスマートフォンでの表示領域が高くなり、小さくすると低くなります。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssではタブ切り替え全体にwidth:100%とmax-width:700pxを指定し、画面幅に合わせて横幅が縮小するようにしています。iframeにもwidth:100%を指定しているため、パネルの横幅に合わせて表示されます。

画面幅640px以下では、ページ全体の余白を24px 12px、タブ切り替え全体の余白を24px 18px、タブを12px 8px、パネルを12pxへ変更し、iframeの高さを360pxへ調整しています。スマートフォン・タブレット・PCの画面幅に合わせて利用できます。


こちらもおすすめ


コメント