Parece que deve ser fácil, mas não estou conseguindo nada.
Quero fazer uma página HTML contendo uma única imagem SVG que é dimensionada automaticamente para caber na janela do navegador, sem qualquer rolagem e preservando sua proporção.
Por exemplo, no momento tenho uma imagem SVG de 1024x768; se a janela de visualização do navegador for 1980x1000, quero que a imagem seja exibida em 1333x1000 (preencher verticalmente, centralizado horizontalmente). Se o navegador era 800x1000, eu quero que ele seja exibido em 800x600 (preencher horizontalmente, centralizado verticalmente).
Atualmente eu tenho definido assim:
<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>
No entanto, isso está aumentando para a largura total do navegador (para uma janela ampla, mas curta) e produzindo rolagem vertical, que não é o que eu quero.
o que estou perdendo?
Respostas:
E se:
Ou:
Tenho um exemplo em meu site usando (aproximadamente) essa técnica, embora com 5% de preenchimento ao redor, e usando em
position:absolute
vez deposition:fixed
:http://phrogz.net/svg/svg_in_xhtml5.xhtml
(O uso
position:fixed
evita um cenário muito extremo de vinculação a uma âncora de subpágina na página eoverflow:hidden
pode garantir que nenhuma barra de rolagem apareça (no caso de você ter conteúdo extra).fonte
viewBox
atributo.