iframeでPDF・Googleマップ・YouTubeをカード内に表示する方法

カードUI
無料ツール
カードを自由に作成

タイトル・説明文・サイズ・配置・背景色・枠線・影・文字などを設定して、HTMLとCSSを自動生成できます。

カード作成ツールを使う
新しいタブで開きます

iframeを使うと、YouTube動画やGoogleマップ、PDFをWebページ内に直接表示できます。今回のサンプルでは、3種類のコンテンツをそれぞれ独立した表示領域に埋め込み、ページを移動せずに動画の再生や地図の操作、PDFの閲覧ができるようにしています。

PDFの表示領域には、ブラウザに対応したPDFビューアーが表示されます。対応する環境では、ページの移動や拡大・縮小、ダウンロードなどの操作ができます。Googleマップの表示領域では東京駅周辺の地図を確認でき、地図をドラッグして移動したり、拡大・縮小したりできます。

YouTubeの表示領域には動画プレーヤーが埋め込まれており、再生ボタンを押すと、その場で動画を視聴できます。PDFとGoogleマップは一定の高さで表示し、YouTubeは動画に合わせた16:9の比率で表示しています。スマートフォンでは画面幅に合わせて表示領域が縮小されるため、横幅の狭い画面でも3種類のコンテンツを確認できます。

デモ

① PDFを表示

② Googleマップを表示

③ YouTube動画を表示

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

① PDFを表示

<!DOCTYPE html>
<html lang="ja">

<head>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <title>PDFをiframeで表示</title>

  <link rel="stylesheet" href="style.css">

</head>

<body>

  <!-- =========================================
       PDFの埋め込み

       【PDFファイルの準備】
       1. 表示したいPDFファイルを用意します。
       2. sampleフォルダ内にpdfフォルダを作成します。
       3. pdfフォルダ内にsample.pdfを配置します。
       4. ファイル名や保存場所を変更する場合は、
          src属性のパスも変更してください。

       ※PDFファイルはZIPに含まれません。
  ========================================= -->

  <div class="iframe-embed_pdf">

    <iframe
      class="iframe-embed_pdf-frame"
      src="pdf/sample.pdf"
      title="PDFサンプル"
      loading="lazy">
    </iframe>

  </div>

</body>

</html>

② Googleマップを表示

<!DOCTYPE html>
<html lang="ja">

<head>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <title>Googleマップをiframeで表示</title>

  <link rel="stylesheet" href="style.css">

</head>

<body>

  <!-- =========================================
       Googleマップの埋め込み

       【埋め込みURLの取得方法】
       1. Googleマップで表示したい場所を検索します。
       2. 「共有」をクリックします。
       3. 「地図を埋め込む」を選択します。
       4. 「HTMLをコピー」をクリックします。
       5. コピーしたiframeコードのsrc属性から
          埋め込みURLを取得します。
       6. YOUR_GOOGLE_MAP_EMBED_URLを
          取得したURLに置き換えてください。

       ※URLに&が含まれる場合は、
         HTML内では&amp;と記述してください。
       ※Google Maps JavaScript APIや
         APIキーは使用しません。
  ========================================= -->

  <div class="iframe-embed_map">

    <iframe
      class="iframe-embed_map-frame"
      src="YOUR_GOOGLE_MAP_EMBED_URL"
      title="Googleマップ"
      loading="lazy"
      referrerpolicy="no-referrer-when-downgrade">
    </iframe>

  </div>

</body>

</html>

③ YouTube動画を表示

<!DOCTYPE html>
<html lang="ja">

<head>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <title>YouTube動画をiframeで表示</title>

  <link rel="stylesheet" href="style.css">

</head>

<body>

  <!-- =========================================
       YouTube動画の埋め込み

       【動画IDの取得方法】
       1. YouTubeで表示したい動画を開きます。
       2. 「共有」から動画のURLをコピーします。
       3. 通常の動画URLでは、
          watch?v=の後ろにある文字列が動画IDです。
       4. 短縮URLでは、
          youtu.be/の後ろにある文字列が動画IDです。
       5. YOUR_VIDEO_IDを取得した動画IDに
          置き換えてください。

       ※URL全体ではなく動画IDだけを設定します。
       ※埋め込みが許可されている動画を使用してください。
  ========================================= -->

  <div class="iframe-embed_youtube">

    <iframe
      class="iframe-embed_youtube-frame"
      src="https://www.youtube.com/embed/YOUR_VIDEO_ID"
      title="YouTube動画"
      loading="lazy"
      allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
      referrerpolicy="strict-origin-when-cross-origin"
      allowfullscreen>
    </iframe>

  </div>

</body>

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

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

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

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

ファイル構成と設置方法

今回は、PDF・Googleマップ・YouTube動画をiframeで表示する3種類のサンプルを用意しています。それぞれHTMLとCSSだけで構成されており、JavaScriptは使用しません。HTMLでは埋め込むコンテンツの参照先を指定し、CSSでは表示領域の横幅・高さ・枠線などを設定しています。

3種類のサンプルは個別にダウンロードできるため、使用したいものだけを選択できます。各ZIPにはindex.htmlとstyle.cssが収録されています。PDFは利用者自身でファイルを用意する必要があり、GoogleマップとYouTubeは、それぞれのサービスから取得したURLや動画IDを設定して使用します。

ファイル構成
PDFのサンプルは、ZIPを展開したあとにpdfフォルダとPDFファイルを追加します。設置完了後の構成は次のとおりです。

sample/
├── index.html
├── style.css
└── pdf/
    └── sample.pdf

GoogleマップとYouTubeのサンプルは、どちらも次の構成です。

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

各ファイルの役割
index.htmlには、コンテンツを表示するiframeを配置しています。PDFではファイルの保存先、Googleマップでは埋め込みURL、YouTubeでは動画IDを指定します。
style.cssでは、iframeの最大横幅や高さ、枠線、角丸などを設定しています。PDFとGoogleマップにはスマートフォン用の高さ調整も含まれています。
pdf/sample.pdfは、PDFのサンプルで表示するファイルです。ZIPには含まれていないため、利用者自身で用意してください。

設置方法・使い方
使用したいサンプルの「サンプル一式をダウンロード」をクリックしてZIPを保存し、展開してください。展開するとsampleフォルダが作成され、その中にindex.htmlとstyle.cssが入っています。

PDFを表示する場合はPDFファイルを配置し、GoogleマップとYouTubeを表示する場合は、それぞれの埋め込み情報をindex.htmlに設定します。設定後、index.htmlをブラウザで開くと表示を確認できます。GoogleマップとYouTubeの表示にはインターネット接続が必要です。

① PDFファイルの設定方法
PDFのサンプルでは、iframeのsrc属性に表示したいPDFファイルの保存先を指定します。

<iframe
  class="iframe-embed_pdf-frame"
  src="pdf/sample.pdf"
  title="PDFサンプル"
  loading="lazy">
</iframe>

まず、表示したいPDFファイルを用意してください。次に、sampleフォルダ内にpdfフォルダを作成し、その中へPDFファイルを配置します。

掲載コードではpdf/sample.pdfを参照しているため、ファイル名をsample.pdfにすると、そのまま表示できます。別のファイル名を使用する場合は、index.htmlのsrc属性も変更してください。

例えば、guide.pdfというファイルを配置した場合は、src="pdf/guide.pdf"に変更します。PDFはブラウザのPDF表示機能を利用するため、閲覧時に表示される操作ボタンやダウンロード機能はブラウザによって異なります。

② Googleマップの設定方法
Googleマップのサンプルでは、表示したい場所の埋め込みURLを取得し、index.htmlに設定します。

Googleマップを開き、表示したい場所を検索してください。場所の情報画面から「共有」を選択し、「地図を埋め込む」を開きます。「HTMLをコピー」をクリックすると、iframeを含む埋め込みコードを取得できます。

コピーしたコードにはsrc属性が含まれています。この属性に指定されているURLが、地図を表示するための埋め込みURLです。

配布コードでは、次のようにYOUR_GOOGLE_MAP_EMBED_URLというプレースホルダーを使用しています。

<iframe
  class="iframe-embed_map-frame"
  src="YOUR_GOOGLE_MAP_EMBED_URL"
  title="Googleマップ"
  loading="lazy"
  referrerpolicy="no-referrer-when-downgrade">
</iframe>

YOUR_GOOGLE_MAP_EMBED_URLを、取得した埋め込みURLに置き換えてください。コピーしたiframe全体を貼り付ける必要はなく、src属性のURLだけを使用します。

Googleマップの「HTMLをコピー」で取得した埋め込みコードから、src属性のURLをそのまま使用できます。Google Maps JavaScript APIを使用しないため、APIキーやMap IDの取得は必要ありません。

③ YouTube動画の設定方法
YouTubeのサンプルでは、表示したい動画の動画IDを取得して設定します。動画IDは、YouTube上の動画を識別するための文字列です。

YouTubeで表示したい動画を開き、「共有」から動画のURLをコピーしてください。通常の動画URLではwatch?v=の後ろにある文字列が動画IDです。短縮URLではyoutu.be/の後ろにある文字列が動画IDになります。

取得した動画IDを、index.htmlのYOUR_VIDEO_IDへ設定します。

<iframe
  class="iframe-embed_youtube-frame"
  src="https://www.youtube.com/embed/YOUR_VIDEO_ID"
  title="YouTube動画"
  loading="lazy"
  allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
  referrerpolicy="strict-origin-when-cross-origin"
  allowfullscreen>
</iframe>

src属性にはYouTubeの埋め込み用URLを指定しています。YOUR_VIDEO_IDの部分だけを取得した動画IDに置き換えてください。通常の視聴ページのURL全体を設定するのではなく、embed/の後ろに動画IDを指定します。

allowfullscreenは動画の全画面表示を許可する属性です。また、動画によっては投稿者側の設定などにより、外部サイトへの埋め込みが許可されていない場合があります。その場合は、埋め込み可能な動画を使用してください。

iframeの表示サイズの仕組み
PDFとGoogleマップは高さを固定し、YouTubeは動画の縦横比に合わせて高さが決まるようにしています。

PDFとGoogleマップのstyle.cssでは、iframeに次の設定を使用しています。

width: 100%;
height: 400px;

width: 100%;は親要素の横幅に合わせる指定です。height: 400px;はiframeの高さを400pxに固定する指定なので、横幅が変わっても通常時の高さは変わりません。

一方、YouTubeのstyle.cssでは、表示領域に次の設定を使用しています。

/* YouTube動画の表示領域 */
.iframe-embed_youtube {
  width: 100%;
  max-width: 800px;
  margin: 0 auto;
  aspect-ratio: 16 / 9;
}

/* YouTube動画のiframe */
.iframe-embed_youtube-frame {
  display: block;
  width: 100%;
  height: 100%;
  border: 1px solid #dbe3ee;
  border-radius: 10px;
  background: #ffffff;
  box-sizing: border-box;
}

aspect-ratio: 16 / 9;によって、表示領域の横幅に応じた高さが決まります。内側のiframeはwidth: 100%;とheight: 100%;で表示領域全体に広がるため、動画を16:9の比率で表示できます。

カスタマイズできる内容
表示するコンテンツは、それぞれのindex.htmlで変更できます。PDFはsrc属性のファイルパス、Googleマップは埋め込みURL、YouTubeは動画IDを変更してください。

iframeの枠線は、各サンプルのstyle.cssにあるborder: 1px solid #dbe3ee;で設定しています。枠線の太さや色を変更でき、border-radius: 10px;を変更すると角の丸みを調整できます。

数値調整
3種類のサンプルでは、style.cssのmax-width: 800px;が表示領域の最大横幅です。値を大きくすると横に広がり、小さくすると狭くなります。width: 100%;も指定されているため、親要素の横幅が800pxより狭い場合は、その幅に合わせて表示されます。

PDFでは.iframe-embed_pdf-frame、Googleマップでは.iframe-embed_map-frameのheight: 400px;を変更すると、表示領域の高さを調整できます。例えば、高さを大きくするとPDFや地図を縦に広く表示できます。

YouTubeでは.iframe-embed_youtubeのaspect-ratio: 16 / 9;が縦横比を決めています。通常の横長動画は16:9のままで問題ありませんが、表示したい動画に合わせて比率を変更することもできます。

レスポンシブ対応
3種類ともwidth: 100%;とmax-width: 800px;を使用しているため、画面幅が狭くなるとiframeの横幅も縮小します。

PDFとGoogleマップでは、さらにstyle.cssに次のメディアクエリを設定しています。

@media (max-width: 640px) {

  /* PDFまたはGoogleマップのiframe */
  .iframe-embed_pdf-frame {
    height: 300px;
  }

}

上記はPDF側の設定例です。Googleマップ側では対象のクラス名が.iframe-embed_map-frameになります。どちらも画面幅が640px以下になると、iframeの高さが400pxから300pxへ変わります。スマートフォンでの表示を縦に長くしたい場合は、この300pxを大きくしてください。

YouTubeには高さを変更するメディアクエリを設けていません。aspect-ratio: 16 / 9;によって横幅に応じて高さが自動的に変わるため、スマートフォンでも動画の縦横比を維持して表示できます。


こちらもおすすめ


コメント