iframe を使う機会は随分少なくなり、Google マップや YouTube 程度。ただ、スマートフォンおよびタブレットの普及により、レスポンシブの要望は必須のような状況です。
そのような状況ですので、レスポンシブで iframe を使うケースがあります。コーポレートサイトの制作をメインとしている当オフィスでは、Google マップでの利用がほとんどですが、希に Google カレンダーや YouTube のご要望があります。Google マップの場合、高さ固定でも問題とならないのですが、Google カレンダーの場合は、スマホでみるとカレンダーが画面からはみ出している状態となったり、YouTube の場合、横長になってしまったりと支障が生じます。
なので、次のようなことを行います。
<div class="sample"> <iframe src="(パス)"></iframe> </div>
CSS については・・・。
.sample{ position:relative; padding-bottom:56.25%; /* 16:9 の場合 56.25%,4:3 の場合 75% */ width:100%; height:0; overflow:hidden; } .sample iframe{ position:absolute; top:0; left:0; width:100%; height:100%; border:none; }
なお、Google カレンダーの場合、カレンダーが取得した HTML コードでは、私の iPhone5 でどうしてもはみ出るため、
https://calendar.google.com/calendar/embed?src=
ではなく
https://calendar.google.com/calendar/htmlembed?src=
が表示されるよう @media screen で切り替えて対処。