186 votes

Redimensionner SVG en HTML ?

Je possède un fichier SVG à l'intérieur d'un document HTML, et une des choses que j'ai entendues à propos de ce format est qu'il ne devient pas tout pixélisé lorsque vous zoomez dessus.

Je sais qu'avec un JPEG ou autre, je pourrais le stocker en tant qu'icône de 50 par 50, puis effectivement l'afficher en tant qu'une vignette de 100 par 100 (plutôt pixélisée) ou 10 par 10, en définissant manuellement la hauteur et la largeur dans la balise image_src.

Cependant, les fichiers SVG semblent être utilisés avec des balises object/embed, et changer la hauteur ou la largeur DE CELLES-CI entraîne simplement plus d'espace alloué pour l'image.

Existe-t-il un moyen de spécifier que vous souhaitez qu'une image SVG soit affichée plus petite ou plus grande que ce qu'elle est effectivement stockée dans le système de fichiers?

214voto

Amadan Points 41944

Ouvrez votre fichier .svg avec un éditeur de texte (c'est juste du XML), et cherchez quelque chose comme ceci en haut :

`

Effacez les attributs de largeur et de hauteur ; les valeurs par défaut sont de 100 %, donc il devrait s'étirer en fonction de ce que permet le conteneur.

`

81 votes

Oui c'est exact, mais vous devez également ajouter un attribut 'viewBox' (par exemple viewBox="0 0 50 50" dans votre exemple de 50x50px), sinon le contenu risque de ne pas être mis à l'échelle correctement (cela dépendra des dimensions du conteneur). Scour le fera automatiquement pour vous, codedread.com/scour.

0 votes

Hooray! Cela a aidé! J'avais déjà les éléments à 100% dans le fichier, en fait, mais la boîte de vue était la clé! Merci à vous deux!

27 votes

Au cas où cela ne serait pas évident pour quelqu'un d'autre, 'viewBox' est sensible à la casse. De plus, les deux premières coordonnées sont le coin supérieur gauche si vous recadrez l'image, et les deux autres coordonnées sont la largeur et la hauteur avant mise à l'échelle.

50voto

Lo Sauer Points 5469

Essayez ceci:

  1. Définissez le viewbox manquant et remplissez les valeurs de hauteur et largeur des attributs de hauteur et de largeur définis dans la balise svg

  2. Ensuite, mettez simplement l'échelle de l'image en définissant la hauteur et la largeur aux valeurs de pourcentage désirées. Bonne chance.

  3. Définissez un ratio d'aspect fixe avec preserveAspectRatio="x200Y200 meet (par exemple, 200px), mais ce n'est pas nécessaire

par exemple

37voto

duhaime Points 494

J'ai trouvé qu'il est préférable d'ajouter les attributs viewBox et preserveAspectRatio à mes SVG. Le viewbox devrait décrire la largeur et la hauteur complètes du SVG sous la forme 0 0 w h:

3 votes

C'est vraiment la meilleure option. Marche à merveille.

0 votes

Faire cela tout en ajoutant width="100%" et height="100%" a parfaitement fonctionné pour moi.

26voto

Chris P Points 797

Utilisez le code suivant :

...

25voto

Tanveer Points 675

Vous pouvez redimensionner en affichant svg dans la balise image et en spécifiant la taille de la balise image c'est-à-dire :

1 votes

Le problème, je pense, avec l'utilisation de est que vous perdez les capacités de basculement de l'étiquette (ce qui pourrait être pertinent pour les utilisateurs d'IE en version 8 et inférieure).

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