GoogleMapなどのiframeをレスポンシブ対応にする方法

本ページにはプロモーションが含まれています。
CSS・html

Googleマップの埋込iframeをレスポンシブにする方法

2つのサンプルコードを記載しています。

・iframeをレスポンシブにする方法
・PCとSPでiframeの縦横比率を変えて、レスポンシブにする方法

iframeをレスポンシブにする方法

iframeタグをレスポンシブに表示する方法です。

手順は2ステップ。

・iframeタグの外側にCSSのクラスを付けたタグ(div)を書き、

・そのCSSのクラスでレスポンシブ対応の記述を書く、

です。

iframeタグ(cssクラス付き)のサンプルコード

クラス名は何でもよいです。map_iframe_wrapにしています。

<div class="map_iframe_wrap">/*これを付ける*/
<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3241.747975468369!2d139.74324421450814!3d35.65858048019959!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x60188bbd9009ec09%3A0x481a93f0d2a409dd!2z5p2x5Lqs44K_44Ov44O8!5e0!3m2!1sja!2sjp!4v1605261169613!5m2!1sja!2sjp" width="600" height="450" frameborder="0" style="border:0;" allowfullscreen="" aria-hidden="false" tabindex="0"></iframe>
</div>/*これも付ける*/

レスポンシブ対応のCSSサンプルコード

付けたしたクラスにレスポンシブ対応のCSSを書きます。

GoogleMapの小・中・大なら以下のサンプルそのままでOKです。
その他は「padding-top」の値を調整する必要があるかも。

.map_iframe_wrap{
    position:relative;
    width:100%;
    height:0;
    padding-top:75%;/*GoogleMapの小・中・大は75%でOK。それ以外ではこの数値は調整が必要かも*/
}
.map_iframe_wrap iframe{
    position:absolute;
    top:0;
    left:0;
    width:100%;
    height:100%;
}
padding-topの調整方法

Googleマップの「地図を埋め込む」で利用できる「大」「中」「小」で取得したiframeであれば75%で大丈夫です。

「カスタム」でサイズ変更した場合や、Googleマップ以外のiframe埋込の場合は、

padding-topのサイズ(上記では75%)は、適宜調整する必要があります。

どのように調整するのかといいますと、

iframeのwidth、heightの比率と、.map_iframe_wrapのwidth、padding-topの比率を合わせる

です。

上記のサンプルでいうと、

(1)のiframeは「width=”600” height=”450”」で、

.map_iframe_wrapのwidthは「100%」ですので、

600:400=100:?

?=75(%)です。(450は600の75%です)

この数値を計算してpadding-topに書いてください。

実際のレスポンシブになったGoogleマップはこちらです。

PCとSPでiframeの縦横比率を変えて、レスポンシブにする方法

次に、パソコンとスマホで地図のサイズ(縦横の比率)を変える方法です。

例えば、パソコンでは横1000px、縦400pxの比率(横長)で表示して、スマホでは横600px、縦600pxの比率で表示する、といった感じです。

iframeタグは同じもの利用して、CSSの記述を少し変えるだけです。

手順は2ステップ。

・iframeタグの外側にCSSのクラスを付けたタグ(div)を書く
・そのCSSのクラスでサイズ変更・レスポンシブ対応の記述を書く

です。

iframeタグ(cssクラス付き)のサンプルコード

CSSクラスはmap_iframe_wrap_changeにしています。

<div class="map_iframe_wrap_change">/*これを付ける。クラスはmap_iframe_wrap_change*/
<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3241.747975468369!2d139.74324421450814!3d35.65858048019959!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x60188bbd9009ec09%3A0x481a93f0d2a409dd!2z5p2x5Lqs44K_44Ov44O8!5e0!3m2!1sja!2sjp!4v1605261169613!5m2!1sja!2sjp" width="600" height="450" frameborder="0" style="border:0;" allowfullscreen="" aria-hidden="false" tabindex="0"></iframe>
</div>/*これも付ける。*/

PCとSPでサイズ変更・レスポンシブにするCSSサンプルコード

パソコン用の表示は横:縦が10:4、スマホ用の表示は横:縦が1:1にしています。

.map_iframe_wrap_change{
    position:relative;
    width:100%;
    height:0;
    padding-top:40%;/*10:4なので40%*/
}

.map_iframe_wrap_change iframe{
    position:absolute;
    top:0;
    left:0;
    width:100%;
    height:100%;
}

@media (max-width: 1000px) {/*メディアクエリは適宜変えてください*/
    .map_iframe_wrap_change{
        position:relative;
        width:100%;
        height:0;
        padding-top:100%;/*1:1なので100%*/
    }
}

実際のレスポンシブになったGoogleマップはこちらです。
パソコン(1000pxより大きい画面)で見ると10:4、スマホ(1000px以下)で見ると1:1になるはず。

コメント

タイトルとURLをコピーしました