SVG viewBox – mettre à l'échelle, recadrer et ajuster

SVG viewBox

L’attribut viewBox indique à SVG quel rectangle de coordonnées doit être ajusté au viewport visible. En changeant ses quatre valeurs, vous pouvez mettre le dessin à l’échelle, le recadrer, déplacer la zone visible ou rendre le même SVG responsive.

Ce guide pratique suppose que vous connaissez déjà canvas, viewport et système de coordonnées. Sinon, commencez par Systèmes de coordonnées et unités SVG.

Dans cet article, vous apprendrez à :

  • Lire viewBox="min-x min-y width height".
  • Mettre à l’échelle le dessin en changeant width et height du viewBox.
  • Recadrer ou repositionner avec min-x et min-y.
  • Combiner viewBox avec preserveAspectRatio.

Fonctionnement de viewBox

viewBox définit un système de coordonnées utilisateur pour le viewport SVG :

1viewBox="min-x min-y width height"
ValeurSignification
min-xCoordonnée X où commence le rectangle visible
min-yCoordonnée Y où commence le rectangle visible
widthLargeur du rectangle de coordonnées visible
heightHauteur du rectangle de coordonnées visible

Le viewport est la zone de sortie. Le viewBox est le rectangle de coordonnées que SVG adapte à cette zone. Un viewBox plus petit est agrandi; un viewBox plus grand rend le contenu visuellement plus petit.

Exemples de mise à l’échelle SVG viewBox: original, zoom arrière et zoom avant

SVG d'exemple utilisé dans l'article

Les exemples utilisent le même dessin SVG; seule la valeur viewBox change, afin de montrer l’effet du rectangle de coordonnées.

Mettre SVG à l’échelle avec viewBox

Zoom arrière avec un `viewBox` plus grand

Si width et height de viewBox dépassent le viewport, SVG adapte une zone de coordonnées plus grande au même espace. Le dessin paraît plus petit.

1<svg width="250" height="250" viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg">

SVG viewBox en zoom arrière: un viewBox plus grand est ajusté au viewport

Zoom avant avec un `viewBox` plus petit

Un viewBox plus petit est agrandi pour remplir le viewport. Le contenu paraît zoomé et ce qui sort du rectangle choisi peut être coupé.

1<svg width="250" height="250" viewBox="0 0 125 125" xmlns="http://www.w3.org/2000/svg">

SVG viewBox en zoom avant: un viewBox plus petit agrandit le contenu

Recadrer ou repositionner SVG avec viewBox

min-x et min-y déplacent le début du rectangle visible.

Recadrer le côté droit

Un min-x négatif déplace le rectangle sélectionné vers la gauche; le contenu à droite peut être coupé.

SVG viewBox recadrant le côté droit

Recadrer le côté gauche

Un min-x positif déplace la zone visible vers la droite; la partie gauche du dessin disparaît.

SVG viewBox recadrant le côté gauche

SVG responsive et preserveAspectRatio

Pour un SVG responsive, conservez viewBox et laissez CSS ou le conteneur contrôler la taille affichée.

1<svg viewBox="0 0 250 250" width="100%" height="auto" xmlns="http://www.w3.org/2000/svg">

preserveAspectRatio contrôle l’alignement et l’ajustement si les proportions du viewport et du viewBox diffèrent. Utilisez meet pour tout afficher et slice pour remplir au prix d’un recadrage.

Comment utiliser SVG viewBox

  1. Définissez le viewport avec width, height, CSS ou layout.
  2. Choisissez le rectangle avec viewBox="min-x min-y width height".
  3. Changez width et height pour zoomer ou dézoomer.
  4. Changez min-x et min-y pour recadrer ou repositionner.
  5. Ajoutez preserveAspectRatio si les proportions diffèrent.

Erreurs courantes et corrections

ProblèmeCauseCorrection
SVG étiréRatios viewport et viewBox différentsAjoutez preserveAspectRatio
Dessin coupéviewBox ne couvre pas la zone voulueVérifiez min-x, min-y, width, height
SVG non responsiveDimensions fixes sans viewBoxGardez viewBox et contrôlez la taille par CSS
CSS ne change pas le recadrageCSS change le viewport, pas le rectangle sélectionnéModifiez viewBox
viewBox ignoréMauvais nombre de valeurs ou guillemets absentsUtilisez quatre valeurs séparées par espaces

FAQ – viewBox

Que fait l'attribut viewBox ?

Il définit le rectangle de coordonnées du canvas SVG qui est adapté au viewport. Il contrôle échelle, recadrage et position visible.

Quelle différence entre viewBox, width et height ?

width et height définissent la taille de sortie. viewBox définit l’espace de coordonnées affiché dans cette sortie.

Faut-il viewBox pour un SVG responsive ?

Oui dans la plupart des cas. viewBox donne un système interne stable tandis que CSS change la taille affichée.

viewBox modifie-t-il les coordonnées des formes ?

Non. Il change seulement la façon dont les coordonnées existantes sont mappées vers le viewport.

Spécification et ressources associées