HTML iframeをレスポンシブ対応する方法|比率固定でスマホでも見やすく
生徒
「先生、iframeって動画や地図を埋め込むタグですよね?でもスマホで見ると横幅が合わなくて困ります。」
先生
「そうですね。iframeはデフォルトだと幅と高さが固定されているので、スマホなど画面サイズが小さい場合に表示が崩れることがあります。」
生徒
「画面サイズに合わせて自動でサイズを変える方法はありますか?」
先生
「ありますよ。CSSを使ってiframeのアスペクト比(比率)を固定しつつ、横幅100%にすることでレスポンシブ対応ができます。」
1. iframeの基本と問題点
HTMLのiframeは、他のWebページやYouTube動画、Googleマップなどを自分のページ内に埋め込むためのタグです。使い方は簡単ですが、幅や高さを固定してしまうとスマートフォンやタブレットなど小さい画面で表示が崩れることがあります。例えば幅600px、高さ400pxで設定していると、スマホ画面では画面からはみ出してしまいます。
2. レスポンシブ対応の基本概念
レスポンシブ対応とは、画面サイズに応じてコンテンツの幅や高さが自動で調整される仕組みです。iframeの場合は、CSSで親要素の幅を100%に設定し、アスペクト比を保つことで縦横比が崩れずに表示できます。アスペクト比とは、横幅と高さの比率のことです。YouTube動画は通常16:9の比率です。
3. CSSでiframeを比率固定する方法
iframeをレスポンシブにするには、まず親要素を作り、positionとpaddingで比率を固定します。例えば16:9の場合は以下のように書きます。
<div class="iframe-container" style="position:relative; width:100%; padding-bottom:56.25%;">
<iframe src="https://www.youtube.com/embed/dQw4w9WgXcQ" style="position:absolute; top:0; left:0; width:100%; height:100%;" frameborder="0" allowfullscreen></iframe>
</div>
ブラウザ表示
4. padding-bottomで比率を決める理由
CSSのpadding-bottomにパーセンテージを使うと、親要素の幅に応じて高さが自動で計算されます。16:9の比率の場合は9÷16=0.5625なので、padding-bottom:56.25%と設定します。こうすることで、どんな画面でも横幅100%で比率を保ったまま表示されます。
<div class="iframe-container" style="position:relative; width:100%; padding-bottom:75%;">
<iframe src="https://www.google.com/maps/embed?pb=..." style="position:absolute; top:0; left:0; width:100%; height:100%;" frameborder="0" allowfullscreen></iframe>
</div>
ブラウザ表示
5. Bootstrapを使った簡単レスポンシブiframe
Bootstrap5にはレスポンシブiframe用のユーティリティクラスが用意されています。ratioクラスを使うと簡単に比率固定が可能です。
<div class="ratio ratio-16x9">
<iframe src="https://www.youtube.com/embed/dQw4w9WgXcQ" title="YouTube video" allowfullscreen></iframe>
</div>
ブラウザ表示
6. iframeのアクセシビリティとSEO対策
iframeにはtitle属性を必ず付けましょう。title属性は視覚障害のある方が読み上げソフトで内容を理解するために必要です。また、iframe内のコンテンツは検索エンジンに直接読み込まれないため、SEOの観点ではiframe周辺のテキストで内容を補足することが重要です。例えば動画の説明や関連情報をテキストで書くと検索結果に反映されやすくなります。
<div class="ratio ratio-16x9">
<iframe src="https://www.youtube.com/embed/dQw4w9WgXcQ" title="説明動画" allowfullscreen></iframe>
</div>
<p>この動画はHTMLのiframeレスポンシブ対応について解説しています。スマホでも見やすい16:9比率で表示されます。</p>
ブラウザ表示
7. 実践!複数のiframeをレスポンシブに並べる
複数の動画や地図を並べたい場合も、親要素にレスポンシブの設定をしておけば簡単です。Bootstrapのグリッドと組み合わせると便利です。
<div class="row">
<div class="col-md-6 mb-3">
<div class="ratio ratio-16x9">
<iframe src="https://www.youtube.com/embed/dQw4w9WgXcQ" title="動画1" allowfullscreen></iframe>
</div>
</div>
<div class="col-md-6 mb-3">
<div class="ratio ratio-16x9">
<iframe src="https://www.youtube.com/embed/9bZkp7q19f0" title="動画2" allowfullscreen></iframe>
</div>
</div>
</div>
ブラウザ表示
8. まとめるとレスポンシブiframeのポイント
iframeをスマホやタブレットでも見やすくするには、以下のポイントを押さえましょう。親要素で幅を100%にしてpadding-bottomで比率を固定する。Bootstrapならratioクラスを使う。title属性を付けてアクセシビリティを意識する。周辺テキストで内容を補足し、SEOにも配慮する。これで安全かつ検索に強いレスポンシブiframeが作れます。
まとめ
今回の記事では、HTMLのiframeをスマホやタブレットでも快適に表示できるようにレスポンシブ対応する方法について詳しく解説しました。iframeはWebページに外部コンテンツを埋め込む便利なタグですが、デフォルトでは幅や高さが固定されているため、小さい画面での表示に問題が生じやすいです。そのため、親要素の幅を100%に設定し、padding-bottomを使ってアスペクト比を固定する方法を理解することが重要です。例えばYouTube動画でよく使われる16:9の比率であれば、padding-bottom:56.25%と設定することで、横幅に応じて高さが自動調整され、どのデバイスでも適切に表示されます。
また、Bootstrapのratioクラスを活用することで、CSSを個別に書かなくても簡単にレスポンシブiframeを実装できます。複数のiframeを並べる場合でも、Bootstrapのグリッドと組み合わせれば整列が容易です。さらに、iframeにtitle属性を付与することでアクセシビリティが向上し、画面読み上げソフトを使用するユーザーにも配慮できます。SEOの観点では、iframe内のコンテンツは検索エンジンが直接認識できないため、周囲に説明文や関連情報をテキストで記載することが効果的です。
まとめると、レスポンシブiframeを作る際のポイントは以下の通りです。
- 親要素の幅を100%に設定し、padding-bottomで縦横比を固定する
- Bootstrapのratioクラスを活用して簡単にレスポンシブ化する
- iframeにtitle属性を付与してアクセシビリティに配慮する
- 周囲のテキストで内容を補足し、SEOに配慮する
- 複数iframeはグリッドと組み合わせて整列させる
実際にコードを使って試してみると、画面サイズが変わっても動画や地図が見やすくなることを実感できます。レスポンシブ対応は初心者でも少しのCSS理解で可能ですので、ぜひ実践してWebページの利便性を向上させましょう。
サンプルプログラム:レスポンシブiframe(16:9比率)
<div class="iframe-container" style="position:relative; width:100%; padding-bottom:56.25%;"> <iframe src="https://www.youtube.com/embed/dQw4w9WgXcQ" style="position:absolute; top:0; left:0; width:100%; height:100%;" frameborder="0" title="サンプル動画" allowfullscreen></iframe> </div> ブラウザ表示
生徒
「先生、今回のiframeレスポンシブ化で一番大事なポイントは何でしょうか?」
先生
「まず、親要素の幅を100%にして、padding-bottomで縦横比を固定することです。これで画面サイズに関わらず比率を保てます。」
生徒
「Bootstrapのratioクラスも使えるんですね。コードがシンプルになって便利です。」
先生
「その通りです。さらにtitle属性を付ければアクセシビリティも確保でき、周囲にテキストで説明を書けばSEOにも配慮できます。」
生徒
「複数のiframeを並べる場合も、グリッドを使えば整列しやすいですね。」
先生
「はい、これでスマホでもタブレットでも、見やすいWebページを作ることができます。実際に手を動かして試すことが理解への近道です。」
「意味」がわかればWebは楽しい!現役エンジニアが教える、挫折しないためのHTML構造化入門
「Webの仕組み」を正しく操る。HTML5でプロフェッショナルな情報設計の第一歩を。
本講座では、単なるタグの暗記ではなく、「検索エンジンやAIに正しく伝わる情報の構造化」という本質的な技術を学びます。モダンWebの土台であるHTML5を通じて、将来的にWebデザイナーやフロントエンドエンジニアを目指すための「稼げる基礎力」を最短距離で身につけます。
具体的なワークショップ内容と環境
【つくるもの】
自己紹介やポートフォリオの土台となる「構造化されたWebページ」を作成します。見出し、段落、リスト、リンク、画像配置など、商用サイトでも必ず使われる「セマンティックなマークアップ」をゼロから体験してください。
【開発環境】
世界中のプロが愛用するVisual Studio Code (VS Code)を使用します。Emmet(高速入力機能)の設定から、HTMLの文法ミスを自動チェックする拡張機能まで、現場基準の効率的な環境を一緒に構築します。
この60分で得られる3つの武器
Googleから高く評価されるタグの選び方を理解し、検索上位を狙えるサイト構造の作り方を学びます。
プロが使うショートカットや自動補完機能を習得し、タイピングの手間を最小限にする技術を体得します。
画像への代替テキストや適切な階層構造など、誰にとっても使いやすい「優しいWeb」の作り方を伝授します。
※本講座は、将来的にWebデザイナー、コーダー、フロントエンドエンジニアを目指す未経験者のためのエントリー講座です。「モクモク」独自のマンツーマン形式により、コードを1行書くたびに生まれる疑問をその場で解決します。
現役エンジニアが教えるHTML入門
各回少人数・マンツーマン形式で徹底サポート
このセミナーの詳細・お申し込みはこちら