iframeをトーストに表示する方法【HTML/CSS/JavaScript・サンプルコード付き】

トースト

iframeをトーストに表示する方法

iframeをトーストに表示する方法を紹介します。このサンプルでは、「ページを表示」ボタンをクリックすると画面右下へトーストが表示され、その中にiframeで外部ページを表示します。通常のテキスト通知として使われるトーストへiframeを組み合わせることで、現在のページから移動せずに別ページの内容を確認できます。

操作マニュアル、案内ページ、関連ページ、外部サービスの埋め込み画面などを、必要なときだけ表示したい場合に利用できます。トーストにはiframeと閉じるボタンを配置し、利用者が「ページを表示」をクリックすると表示され、×ボタンをクリックすると非表示になります。常にiframeを画面へ表示しておく必要がないため、ページ内の表示スペースを抑えながら補足情報を案内できます。

HTMLでは表示するページのURL、タイトル、ボタンの文章を変更でき、CSSではトーストの横幅、高さ、余白、角丸、影、表示位置などを調整できます。JavaScriptでは表示ボタンと閉じるボタンによる開閉を行います。画面幅が狭い場合はトーストの横幅を自動で縮小するため、スマートフォン・タブレット・PCで利用できます。

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

デモ

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>

  <!-- iframeトースト全体 -->
  <div class="iframe-toast_wrap">

    <!-- タイトル -->
    <div class="iframe-toast_title">
      iframeをトーストに表示
    </div>

    <!-- 説明文 -->
    <p class="iframe-toast_text">
      ボタンをクリックすると、画面右下のトーストにページが表示されます。
    </p>

    <!-- トーストを表示するボタン -->
    <button
      type="button"
      class="iframe-toast_button"
      data-iframe-toast-open="">
      ページを表示
    </button>

  </div>

  <!-- iframeを表示するトースト -->
  <div class="iframe-toast_message" data-iframe-toast="">

    <!-- トースト上部 -->
    <div class="iframe-toast_header">

      <!-- トーストタイトル -->
      <div class="iframe-toast_heading">
        サンプルページ
      </div>

      <!-- 閉じるボタン -->
      <button
        type="button"
        class="iframe-toast_close"
        data-iframe-toast-close=""
        aria-label="閉じる">
        ×
      </button>

    </div>

    <!-- iframe表示エリア -->
    <div class="iframe-toast_frame">

      <!--
        【表示するページURLの設定方法】

        YOUR_IFRAME_URL を、
        iframeで表示したいページのURLへ置き換えてください。

        例:
        https://example.com/

        iframeへの埋め込みを禁止しているWebサイトは
        表示できない場合があります。
      -->
      <iframe
        src="YOUR_IFRAME_URL"
        title="サンプルページ">
      </iframe>

    </div>

  </div>

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

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

ファイル構成と設置方法

このサンプルは、HTML・CSS・JavaScriptの3ファイルで構成されています。 HTMLで表示ボタン・トースト・iframeを配置し、CSSで画面右下に表示するトーストの見た目を整え、JavaScriptでトーストの表示と非表示を切り替えます。 iframeに表示するページは利用者自身で用意し、index.html内のYOUR_IFRAME_URLを表示したいページのURLへ置き換えて使用します。

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

各ファイルの役割
index.htmlには、「ページを表示」ボタン、画面右下へ表示するトースト、閉じるボタン、ページを読み込むiframeを記述しています。 iframeのsrcにあるYOUR_IFRAME_URLが、利用者自身で設定するページURLです。トースト内の「サンプルページ」というタイトルやボタンの文章も、このファイルで変更できます。

style.cssでは、サンプル全体の横幅や余白、ボタン、トーストの位置・サイズ・角丸・影、iframeの表示サイズなどを設定しています。また、画面幅640px以下でトーストの横幅やiframeの高さを変更するレスポンシブ設定も記述しています。

script.jsでは、「ページを表示」ボタンをクリックしたときにis-showクラスを追加してトーストを表示し、「×」をクリックしたときにクラスを削除してトーストを閉じます。

設置方法・使い方
まず、iframe内へ表示したいページのURLを用意します。index.htmlを開き、iframeのsrc="YOUR_IFRAME_URL"にあるYOUR_IFRAME_URLを、実際に表示したいページのURLへ置き換えてください。

例えば表示したいページのURLがhttps://example.com/の場合は、src="https://example.com/"のように設定します。ただし、Webサイト側でiframeへの埋め込みが禁止されている場合は、この方法ではページを表示できません。

URLを設定したら、index.htmlstyle.cssscript.jsを同じsampleフォルダへ配置し、sample/index.htmlをブラウザで開きます。「ページを表示」をクリックすると画面右下へトーストが表示され、「×」をクリックすると閉じます。

カスタマイズできる内容
index.htmlでは、YOUR_IFRAME_URLを変更することでiframeへ表示するページを変更できます。また、「iframeをトーストに表示」「ページを表示」「サンプルページ」などの表示文章も変更できます。

style.cssでは、backgroundcolorで背景色・文字色、border-radiusで角丸、box-shadowで影を変更できます。rightbottomを変更すると、画面右端・下端からトーストまでの間隔を調整できます。

数値調整
style.cssmax-width:700px;は、最初に表示されるサンプル全体の最大横幅です。値を大きくすると横に広がり、小さくすると狭くなります。

width:min(460px,calc(100vw - 48px));460pxは、トーストの最大横幅です。値を変更すると、PC表示時のトーストの横幅を調整できます。

right:24px;bottom:24px;は、トーストを画面右端・下端から離す距離です。値を大きくすると画面端から離れます。

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

transition:.3s;は、トーストを表示・非表示にするときの切り替え時間です。値を大きくするとゆっくり、小さくすると速く切り替わります。

レスポンシブ対応
style.cssでは、トーストの横幅にcalc(100vw - 48px)を使用しているため、画面幅が狭い場合でも画面内へ収まるようになっています。iframeにもwidth:100%を指定し、トーストの横幅に合わせて表示されます。

また、@media (max-width:640px)を使用し、画面幅640px以下ではトーストを右端・下端から16pxの位置へ変更し、横幅をcalc(100vw - 32px)、iframe表示エリアの高さを260pxに変更します。スマートフォン・タブレット・PCの画面幅に合わせて利用できます。


こちらもおすすめ


コメント