Parece que debería ser fácil, pero no obtengo nada.
Quiero crear una página HTML que contenga una sola imagen SVG que se escale automáticamente para adaptarse a la ventana del navegador, sin desplazarse y conservando su relación de aspecto.
Por ejemplo, en este momento tengo una imagen SVG de 1024x768; si la ventana del navegador es 1980x1000, entonces quiero que la imagen se muestre a 1333x1000 (rellenar verticalmente, centrado horizontalmente). Si el navegador era 800x1000, quiero que se muestre a 800x600 (relleno horizontalmente, centrado verticalmente).
Actualmente lo tengo definido así:
<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>
Sin embargo, esto se está ampliando al ancho completo del navegador (para una ventana ancha pero corta) y produciendo un desplazamiento vertical, que no es lo que quiero.
¿Qué me estoy perdiendo?
Respuestas:
Qué tal si:
O:
Tengo un ejemplo en mi sitio usando (aproximadamente) esta técnica, aunque con un 5% de relleno alrededor, y usando en
position:absolute
lugar deposition:fixed
:http://phrogz.net/svg/svg_in_xhtml5.xhtml
(El uso
position:fixed
evita un escenario muy extremo de vinculación a un ancla de subpágina en la página yoverflow:hidden
puede garantizar que nunca aparezcan barras de desplazamiento (en caso de que tenga contenido adicional).fuente
viewBox
atributo.