デジタルマーケッター・ブログ集客専門家 時々 おもろいおっさん

iframeのレスポンシブ対応の方法。iphoneではみ出る問題も解決済み

  
はみ出る
\ この記事を共有 /
iframeのレスポンシブ対応の方法。iphoneではみ出る問題も解決済...

iframeタグを使うと、別のページの内容が埋め込めるということは前回の記事で書きました。
⇒「知っておくと便利!別のページを記事の中に埋め込むiframeの基本的な使い方

ただ、iframeタグは、ただただ使ってしまうとスマホやタブレット、PCどこからみてもキレイな表示のレスポンシブ対応にはなりません。

そこで今回は、iframeタグのレスポンシブ対応について調べて実践してみました。

iframeをレスポンシブ対応させる方法(基本編)

例えばこのようなiframeのタグを使うと、レスポンシブ対応されません。スマホやタブレットで見るとはみ出したり変な表示になります。

<iframe src="埋め込むページのURL" width="750" height="350" frameboader="0"></iframe>

レスポンシブ対応させる方法。HTMLとCSS

そこで、以下のように親要素を用意し、CSSで調整をしてあげます。

HTML↓ 

<div class="iframe-wrap">
 <iframe src="埋め込むページのURL" frameboader="0"></iframe>
</div>

iframeを<div class=”iframe-wrap”>~</div>など親要素ではさみます。(※iframe-wrap部分の名前は何でもOK。<div class=”hoge”>でもいいし<div class=”oya”>でもOKです)

またiframeタグのwidth、heightをなくしてあげましょう。

CSS ↓  ※これはまだ使わないで下さい。

.iframe-wrap {
  position: relative;
  width: 100%;
  padding-top: 56.25%;
}

.iframe-wrap iframe {
  position: absolute;
  top: 0;
  right: 0;
  width: 100%;
  height: 100%;
}

あとは、親要素の大きさは横幅は画面いっぱい100%の、横16:縦9で用意します。その中の要素は横・縦100%で埋めてあげる感じです。

※padding-topの数字(例では56.25%にしている部分)は、iframeの高さに当たる部分なので好きに調整してみてください。

これで、アンドロイド端末であれば、スマホからでもキレイに見えるようになります。

参照:コトダマウェブ様「アイフレームをスマホ対応させる方法

が!!

これだけだとiphoneから見てみると、はみ出る。うまくいかない。

iPhone特有の仕様のせいらしいのですが、これには困りました。

iPhoneからでもキレイに見れるようにするにはどうしたらいいか?

結論から言うと、HTML、CSSは以下のようにします。

HTML↓

<div class="iframe-wrap">
 <iframe src="埋め込むページのURL" frameboader="0"></iframe>
</div>

CSS↓(※これもまだ使わないで!w)

.iframe-wrap {
  position: relative;
  width: 100%;
  padding-top: 56.25%;
  overflow:auto; 
  -webkit-overflow-scrolling:touch;
}
.iframe-wrap iframe {
    position:absolute;
    top:0;
    left:0;
    width:100%;
    height:100%;
    display:block;
}

そこで、こちらのサイト「iPhoneでもiframeを使ってスクロールさせて、かつ、PCとも外観を揃える方法」を参考に調整。

親要素に

overflow:auto; 
-webkit-overflow-scrolling:touch;

この2行を追加。

  • overflow:auto; で、ボックスに入らない時は、はみ出た部分はスクロールさせるようにする。
  • -webkit-overflow-scrolling:touch;の部分で、スマホなどで指でスクロールした時に惰性でスクロールし続けるかどうか?を指定しています。(touchじゃなくてautoだと、指を離すとスクロールが止まる)

iframe内の要素も一応blockにします。

これだけだと、埋め込んだiframeの枠が汚いので、ちょっとだけCSSに数行付け足して整えてあげます。

【完成版】iPhoneでもiframeをキレイに埋め込むためのHTMLとCSS

ということで、以下のようにすると、キレイに埋め込めました。

HTML↓

<div class="iframe-wrap">
 <iframe src="埋め込むページのURL" frameboader="0"></iframe>
</div>

このHTMLをブログやホームページに貼ります。(WordPresssの記事を書く画面でいうと、テキストモードやコードエディターなどに貼ります)

CSS↓

.iframe-wrap {
  position: relative;
  width: 100%;
  padding-top: 56.25%;
  overflow:auto; 
  -webkit-overflow-scrolling:touch;
  border:2px solid #ccc; 
}
.iframe-wrap iframe {
    position:absolute;
    top:0;
    left:0;
    width:100%;
    height:100%;
    border:none;
    display:block;
}

このCSSを使いましょう! WordPressなら外観⇒カスタマイズ⇒追加CSSに追記しておくといいです。

iPhoneでも、キレイに表示されていますでしょうか・・・!

↓↓↓

 

まとめ

今回も、自分自身の備忘録としていろんなサイトを参考にさせていただき、記事にしました。

  • iframeを使ってもレスポンシブ対応にならない…
  • iPhoneから見るとはみ出る!

っていう場合に参考にしていただけたら幸いです。

デジタルマーケティングで重要な
「データ分析」を今すぐ始めよう!

\ Kindleで売れ筋トップ獲得本 / 

GA4超入門ガイドブック

プレゼント!

表紙

Comment

  1. […] 参考リンク: ・iPhoneとiPadでiframeの高さの指定ができない・iOSでiframeの内容がはみ出して表示される場合の対処法・モバイル向けWebページでiFrameを使用する際のスクロール問題・iOS Safariでiframe要素の高さが広がってスクロールができない・iframeのレスポンシブ対応の方法。iphoneではみ出る問題も解決済み […]