Wydaje się, że powinno to być łatwe, ale po prostu czegoś nie rozumiem.
Chcę utworzyć stronę HTML zawierającą pojedynczy obraz SVG, który jest automatycznie skalowany w celu dopasowania do okna przeglądarki, bez przewijania i przy zachowaniu współczynnika proporcji.
Na przykład w tej chwili mam obraz SVG 1024x768; jeśli rzutnia przeglądarki ma wymiary 1980 x 1000, chcę, aby obraz był wyświetlany w rozmiarze 1333 x 1000 (wypełnienie w pionie, wyśrodkowanie w poziomie). Jeśli przeglądarka miała rozmiar 800x1000, chcę, aby wyświetlała się w rozmiarze 800x600 (wypełnienie w poziomie, wyśrodkowanie w pionie).
Obecnie mam to tak zdefiniowane:
<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>
Jednak jest to skalowanie do pełnej szerokości przeglądarki (dla szerokiego, ale krótkiego okna) i generowanie przewijania w pionie, czego nie chcę.
czego mi brakuje?
Odpowiedzi:
Co powiesz na:
html, body { margin:0; padding:0; overflow:hidden } svg { position:fixed; top:0; bottom:0; left:0; right:0 }
Lub:
html, body { margin:0; padding:0; overflow:hidden } svg { position:fixed; top:0; left:0; height:100%; width:100% }
Mam na mojej stronie przykład, w którym (w przybliżeniu) zastosowano tę technikę, aczkolwiek z 5% dopełnieniem dookoła i
position:absolute
zamiastposition:fixed
:http://phrogz.net/svg/svg_in_xhtml5.xhtml
(Użycie
position:fixed
zapobiega bardzo skrajnemu scenariuszowi linkowania do kotwicy podstrony na stronie ioverflow:hidden
może zapewnić, że żadne paski przewijania nigdy się nie pojawią (w przypadku dodatkowej zawartości).źródło
viewBox
atrybucie.