99 votes

Comment à l'échelle SVG image pour remplir la fenêtre du navigateur?

Cela semble comme il devrait être facile, mais je suis tout simplement pas obtenir quelque chose.

Je veux faire une page HTML contenant une seule image SVG qui s'adapte automatiquement pour s'adapter à la fenêtre du navigateur, sans le défilement et tout en conservant ses proportions.

Par exemple, en ce moment j'ai une image SVG, résolution de 1024x768; si le navigateur de la fenêtre d'affichage est 1980x1000 alors je veux l'image à afficher à 1333x1000 (à remplir à la verticale, centrée horizontalement). Si le navigateur a été 800x1000 alors je le veux pour un affichage en 800x600 (remplissage horizontalement, centré verticalement).

Actuellement je l'ai défini comme suit:

<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>

Cependant c'est la mise à l'échelle jusqu'à la totalité de la largeur du navigateur (pour une large mais courte fenêtre) et la production de défilement vertical, ce qui n'est pas ce que je veux.

Ce qui me manque?

197voto

Phrogz Points 112337

Comment à ce sujet:

html, body { margin:0; padding:0; overflow:hidden }
svg { position:fixed; top:0; bottom:0; left:0; right:0 }

Ou:

html, body { margin:0; padding:0; overflow:hidden }
svg { position:fixed; top:0; left:0; height:100%; width:100% }

J'ai un exemple sur mon site à l'aide de (environ) cette technique, mais avec 5% de rembourrage tout autour, et à l'aide de position:absolute au lieu de position:fixed:
http://phrogz.net/svg/svg_in_xhtml5.xhtml

(À l'aide d' position:fixed empêche un bord scénario de lien vers une sous-page d'ancrage sur la page, et overflow:hidden peut assurer qu'aucune barre de défilement n'apparaissent jamais (dans le cas où vous avez du contenu supplémentaire.)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X