Das scheint einfach zu sein, aber ich bekomme einfach nichts.
Ich möchte eine HTML-Seite erstellen, die ein einzelnes SVG-Bild enthält, das automatisch an das Browserfenster angepasst wird, ohne zu scrollen und das Seitenverhältnis beizubehalten.
Zum Beispiel habe ich im Moment ein SVG-Bild von 1024 x 768; Wenn das Browser-Ansichtsfenster 1980x1000 ist, soll das Bild bei 1333x1000 angezeigt werden (vertikal füllen, horizontal zentriert). Wenn der Browser 800x1000 war, soll er bei 800x600 angezeigt werden (horizontal füllen, vertikal zentrieren).
Derzeit habe ich es so definiert:
<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>
Dies skaliert jedoch auf die gesamte Breite des Browsers (für ein breites, aber kurzes Fenster) und erzeugt vertikales Scrollen, was ich nicht möchte.
Was vermisse ich?
Antworten:
Wie wäre es mit:
Oder:
Ich habe ein Beispiel auf meiner Website, das (ungefähr) diese Technik verwendet, allerdings mit 5% Füllung ringsum und
position:absolute
anstelle vonposition:fixed
:http://phrogz.net/svg/svg_in_xhtml5.xhtml
(Die Verwendung
position:fixed
verhindert ein sehr randvolles Szenario beim Verknüpfen mit einem Unterseitenanker auf der Seite undoverflow:hidden
kann sicherstellen, dass niemals Bildlaufleisten angezeigt werden (falls Sie zusätzlichen Inhalt haben.)quelle
viewBox
Attribut basiert.