SVGをレスポンシブに対応させる際に少し手間取ったので、対応方法をメモしておきます。
うまくいかなかった場合
まずはうまくいかなかったコードです。
HTML
<div class="contents"> <svg width="400" height="400" viewBox="0 0 400 400"> <circle cx="200" cy="200" r="200" fill="#ccc" /> </svg> </div>
CSS
.contents { max-width: 400px; margin: auto; } .contents svg { width: 100%; height: auto; }
SVGにwidth: 100%; height: auto;でいけるかと思ったのですが、IEでうまく表示できていませんでした。
SVGのレスポンシブ対応でうまくいかなかった場合のデモページ
うまくいった場合
iframeなどのレスポンシブ対応と同様の方法で対応できました。
HTML
<div class="contents"> <div class="svg-wrapper"> <svg width="400" height="400" viewBox="0 0 400 400"> <circle cx="200" cy="200" r="200" fill="#ccc" /> </svg> </div> </div>
CSS
.contents { max-width: 400px; margin: auto; } .svg-wrapper { position: relative; width: 100%; padding-top: 100%; /* SVG高さ / SVG幅 * 100 */ } .svg-wrapper svg { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
【参考サイト】
コメントが承認されるまで時間がかかります。