--- title: preserveAspectRatio slug: Web/SVG/Attribute/preserveAspectRatio tags: - SVG - SVG Attribute translation_of: Web/SVG/Attribute/preserveAspectRatio ---
{{SVGRef}}

L'attibut preserveAspectRatio indique comment un élément est mis à l'échelle lorsque le ratio largeur:hauteur de la viewBox est différent du ratio de la zone d'affichage (définit par les attributs width et height).

Parce que les proportions du SVG sont définies par l'attribut viewBox, si ce dernier n'est pas défini alors l'attribut preserveAspectRatio n'a aucun effet (à l'exception près de l'élément <image> comme décrit ci-dessous).

Exemple

<svg viewBox="-1 -1 162 92" xmlns="http://www.w3.org/2000/svg">
  <defs>
     <path id="smiley" d="M50,10 A40,40,1,1,1,50,90 A40,40,1,1,1,50,10 M30,40 Q36,35,42,40 M58,40 Q64,35,70,40 M30,60 Q50,75,70,60 Q50,75,30,60" />
  </defs>

  <!-- (largeur>hauteur) meet -->
  <svg preserveAspectRatio="xMidYMid meet"  x="0"   y="0"  viewBox="0 0 100 100" width="20"  height="10"><use href="#smiley" /></svg>
  <svg preserveAspectRatio="xMinYMid meet"  x="25"  y="0"  viewBox="0 0 100 100" width="20"  height="10"><use href="#smiley" /></svg>
  <svg preserveAspectRatio="xMaxYMid meet"  x="50"  y="0"  viewBox="0 0 100 100" width="20"  height="10"><use href="#smiley" /></svg>

  <!-- (largeur>hauteur) slice -->
  <svg preserveAspectRatio="xMidYMin slice" x="0"   y="15" viewBox="0 0 100 100" width="20"  height="10"><use href="#smiley" /></svg>
  <svg preserveAspectRatio="xMidYMid slice" x="25"  y="15" viewBox="0 0 100 100" width="20"  height="10"><use href="#smiley" /></svg>
  <svg preserveAspectRatio="xMidYMax slice" x="50"  y="15" viewBox="0 0 100 100" width="20"  height="10"><use href="#smiley" /></svg>

  <!-- (largeur<hauteur) meet -->
  <svg preserveAspectRatio="xMidYMin meet"  x="75"  y="0"  viewBox="0 0 100 100" width="10"  height="25"><use href="#smiley" /></svg>
  <svg preserveAspectRatio="xMidYMid meet"  x="90"  y="0"  viewBox="0 0 100 100" width="10"  height="25"><use href="#smiley" /></svg>
  <svg preserveAspectRatio="xMidYMax meet"  x="105" y="0"  viewBox="0 0 100 100" width="10"  height="25"><use href="#smiley" /></svg>

  <!-- (largeur<hauteur) slice -->
  <svg preserveAspectRatio="xMinYMid slice" x="120" y="0"  viewBox="0 0 100 100" width="10"  height="25"><use href="#smiley" /></svg>
  <svg preserveAspectRatio="xMidYMid slice" x="135" y="0"  viewBox="0 0 100 100" width="10"  height="25"><use href="#smiley" /></svg>
  <svg preserveAspectRatio="xMaxYMid slice" x="150" y="0"  viewBox="0 0 100 100" width="10"  height="25"><use href="#smiley" /></svg>

  <!-- none -->
  <svg preserveAspectRatio="none"           x="0"   y="30" viewBox="0 0 100 100" width="160" height="60"><use href="#smiley" /></svg>
</svg>

{{EmbedLiveSample('topExample', '100%', 200)}}

Syntaxe

preserveAspectRatio="<align> [<meetOrSlice>]"

La valeur de l'attribut est constituée d'un ou deux mots clés : l'alignement et l'option "meet ou slice" (satisfaire ou trancher) comme décrit ci-dessous:

Alignement
L'alignement indique s'il faut forcer une mise à l'échelle uniforme et si oui, comment faire dans le cas où le rapport largeur:hauteur de la viewBox ne correspond pas à celui affiché. Les différentes valeurs possibles sont:
Meet ou slice
La valeur meet ou slice est optionnelle. Les deux valeurs possibles sont:

Éléments

Sept éléments utilisent cet attribut: <svg>, <symbol>, <image>, <feImage>, <marker>, <pattern>, and <view>.

feImage

Pour <feImage>, preserveAspectRatio définit comment l'image doit être ajustée dans le rectangle défini par l'élément <feImage>.

Valeur <align> <meetOrSlice>?
Valeur par défaut xMidYMid meet
Animation Oui

image

Pour <feImage>, preserveAspectRatio définit comment l'image doit être ajustée dans le rectangle défini par l'élément <image>.

Valeur <align> <meetOrSlice>?
Valeur par défaut xMidYMid meet
Animation Oui

marker

Pour <marker>, preserveAspectRatio indique si une mise à l'échelle uniforme doit être effectuée pour s'adapter à la zone d'affichage.

Valeur <align> <meetOrSlice>?
Valeur par défaut xMidYMid meet
Animation Oui

pattern

Pour <pattern>, preserveAspectRatio indique si une mise à l'échelle uniforme doit être effectuée pour s'adapter à la zone d'affichage.

Valeur <align> <meetOrSlice>?
Valeur par défaut xMidYMid meet
Animation Oui

svg

Pour <svg>, preserveAspectRatio indique si une mise à l'échelle uniforme doit être effectuée pour s'adapter à la zone d'affichage.

Valeur <align> <meetOrSlice>?
Valeur par défaut xMidYMid meet
Animation Oui

symbol

Pour <symbol>, preserveAspectRatio indique si une mise à l'échelle uniforme doit être effectuée pour s'adapter à la zone d'affichage.

Valeur <align> <meetOrSlice>?
Valeur par défaut xMidYMid meet
Animation Oui

view

Pour <view>, preserveAspectRatio indique si une mise à l'échelle uniforme doit être effectuée pour s'adapter à la zone d'affichage.

Valeur <align> <meetOrSlice>?
Valeur par défaut xMidYMid meet
Animation Oui

Spécification

Spécification Statut Commentaire
{{SpecName("Filters 1.0", "#element-attrdef-feimage-preserveaspectratio", "preserveAspectRatio")}} {{Spec2('Filters 1.0')}}
{{SpecName("SVG2", "coords.html#PreserveAspectRatioAttribute", "preserveAspectRatio")}} {{Spec2("SVG2")}}
{{SpecName("SVG1.1", "coords.html#PreserveAspectRatioAttribute", "preserveAspectRatio")}} {{Spec2("SVG1.1")}} Définition initiale