これは簡単なはずのように思えますが、私は何かを得ていないだけです。
スクロールせずに、アスペクト比を維持しながら、ブラウザーウィンドウに合わせて自動的に拡大縮小する単一のSVG画像を含むHTMLページを作成したいと思います。
たとえば、現時点では1024x768のSVG画像があります。ブラウザのビューポートが1980x1000の場合、画像を1333x1000で表示します(垂直方向に塗りつぶし、水平方向の中央に配置します)。ブラウザが800x1000の場合、800x600で表示するようにします(水平方向に入力、垂直方向に中央揃え)。
現在、次のように定義されています:
<body style="height: 100%">
<div id="content" style="width: 100%; height: 100%">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
width="100%" height="100%"
viewBox="0 0 1024 768"
preserveAspectRatio="xMidYMid meet">
...
</svg>
</div>
</body>
ただし、これはブラウザーの幅全体に拡大し(幅は広いが短いウィンドウの場合)、垂直スクロールを生成しますが、これは私が望んでいることではありません。
私は何が欠けていますか?
どうですか:
html, body { margin:0; padding:0; overflow:hidden }
svg { position:fixed; top:0; bottom:0; left:0; right:0 }
または:
html, body { margin:0; padding:0; overflow:hidden }
svg { position:fixed; top:0; left:0; height:100%; width:100% }
私のサイトには、5%のパディングがあり、position:absolute
の代わりにposition:fixed
を使用していますが、この手法を(おおよそ)使用している例があります。
http://phrogz.net/svg/svg_in_xhtml5.xhtml
(position:fixed
を使用すると、ページのサブページアンカーへのリンクという非常にエッジケースのシナリオを防ぐことができ、overflow:hidden
はスクロールバーが表示されないことを保証できます(余分なコンテンツがある場合)