Pour spécifier les coordonnées dans l'image SVG, indépendamment de l'échelle de la taille de l'image, utilisez l' viewBox
l'attribut dans l'élément SVG pour définir ce que la boîte englobante de l'image est dans le système de coordonnées de l'image, et l'utilisation de l' width
et height
attributs pour définir ce que la largeur ou la hauteur sont à l'égard de la page qui les contient.
Par exemple, si vous avez le suivant:
<svg>
<polygon fill=red stroke-width=0
points="0,10 20,10 10,0" />
</svg>
Il est rendu comme un 10px par 20px triangle:
![10x20 triangle]()
Maintenant, si vous ne définissez que la largeur et la hauteur, que de changer la taille de l'élément SVG, mais pas à l'échelle du triangle:
<svg width=100 height=50>
<polygon fill=red stroke-width=0
points="0,10 20,10 10,0" />
</svg>
![10x20 triangle]()
Si vous définissez le point de vue de la boîte, qui l'amène à transformer l'image tels que la boîte (dans le système de coordonnées de l'image) est mis à l'échelle pour s'adapter à l'intérieur de la largeur et de la hauteur (dans le système de coordonnées de la page). Par exemple, à l'échelle de triangle à 100px par 50px:
<svg width=100 height=50 viewBox="0 0 20 10">
<polygon fill=red stroke-width=0
points="0,10 20,10 10,0" />
</svg>
![100x50 triangle]()
Si vous souhaitez mettre à l'échelle jusqu'à la largeur de la fenêtre d'affichage HTML:
<svg width="100%" viewBox="0 0 20 10">
<polygon fill=red stroke-width=0
points="0,10 20,10 10,0" />
</svg>
![300x150 triangle]()
Notez que, par défaut, le format de l'image est préservée. Donc, si vous spécifiez que l'élément doit avoir une largeur de 100%, mais une hauteur de 50px, il est en réalité seulement à l'échelle jusqu'à la hauteur de 50px (sauf si vous avez une fenêtre très étroite):
<svg width="100%" height="50px" viewBox="0 0 20 10">
<polygon fill=red stroke-width=0
points="0,10 20,10 10,0" />
</svg>
![100x50 triangle]()
Si vous voulez vraiment de s'étirer horizontalement, désactiver le rapport d'aspect de préservation à l' preserveAspectRatio=none
:
<svg width="100%" height="50px" viewBox="0 0 20 10" preserveAspectRatio=none>
<polygon fill=red stroke-width=0
points="0,10 20,10 10,0" />
</svg>
![300x50 triangle]()
(note que bien que dans mes exemples je utiliser une syntaxe qui fonctionne pour l'intégration HTML, afin d'inclure les exemples comme une image dans StackOverflow, je suis plutôt intégrer dans un autre format SVG, donc j'ai besoin d'utiliser valide la syntaxe XML)