iframeを使うと、YouTube動画やGoogleマップ、PDFをWebページ内に直接表示できます。今回のサンプルでは、3種類のコンテンツをそれぞれ独立した表示領域に埋め込み、ページを移動せずに動画の再生や地図の操作、PDFの閲覧ができるようにしています。
PDFの表示領域には、ブラウザに対応したPDFビューアーが表示されます。対応する環境では、ページの移動や拡大・縮小、ダウンロードなどの操作ができます。Googleマップの表示領域では東京駅周辺の地図を確認でき、地図をドラッグして移動したり、拡大・縮小したりできます。
YouTubeの表示領域には動画プレーヤーが埋め込まれており、再生ボタンを押すと、その場で動画を視聴できます。PDFとGoogleマップは一定の高さで表示し、YouTubeは動画に合わせた16:9の比率で表示しています。スマートフォンでは画面幅に合わせて表示領域が縮小されるため、横幅の狭い画面でも3種類のコンテンツを確認できます。
デモ
コードをコピーして使おう!
① 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内では&と記述してください。
※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 ダウンロードしたけど、これをネット上で動かすにはどうするの?
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;によって横幅に応じて高さが自動的に変わるため、スマートフォンでも動画の縦横比を維持して表示できます。
コメント