--- title: preserveAspectRatio slug: Web/SVG/Attribute/preserveAspectRatio tags: - SVG - SVG Attribute translation_of: Web/SVG/Attribute/preserveAspectRatio --- {{SVGRef}} L'attribut **`preserveAspectRatio`** indique comment un élément est mis à l'échelle lorsque le ratio largeur:hauteur de la [`viewBox`](/fr/docs/Web/SVG/Attribute/viewBox) est différent du ratio de la zone d'affichage (défini 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 [``](/fr/docs/Web/SVG/Element/image) comme décrit ci-dessous_). ## Exemple ```html xMidYMid meet xMinYMid meet xMaxYMid meet xMidYMin slice xMidYMid slice xMidYMax slice xMidYMin meet xMidYMid meet xMidYMax meet xMinYMid slice xMidYMid slice xMaxYMid slice none ``` ```css hidden html,body,svg { height:100% } path { fill: yellow; stroke: black; stroke-width: 8px; stroke-linecap: round; stroke-linejoin: round; pointer-events: none; } rect:hover, rect:active { outline: 1px solid red; } ``` {{EmbedLiveSample('Exemple', '100%', 200)}} ## Syntaxe preserveAspectRatio=" []" 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`](/fr/docs/Web/SVG/Attribute/viewBox) ne correspond pas à celui affiché. Les différentes valeurs possibles sont: - **none** Ne pas forcer la mise à l'échelle uniforme. Étirer le contenu de manière à ce que le contenu remplisse toute la hauteur et toute la largeur affichée. _Notez que si_ `` _vaut_ `none`_, alors la valeur_ `` _est ignorée_. - **xMinYMin** - Force la mise à l'échelle uniforme. Aligne le côté gauche de l'élément à gauche de la zone d'affichage. Aligne le côté haut de l'élément en haut de la zone d'affichage. - **xMidYMin** - Force la mise à l'échelle uniforme. Aligne horizontalement le centre de l'élément au milieu de la zone d'affichage. Aligne le côté haut de l'élément en haut de la zone d'affichage. - **xMaxYMin** - Force la mise à l'échelle uniforme. Aligne le côté droit de l'élément à droite de la zone d'affichage. Aligne le côté haut de l'élément en haut de la zone d'affichage. - **xMinYMid** - Force la mise à l'échelle uniforme. Aligne le côté gauche de l'élément à gauche de la zone d'affichage. Aligne verticalement le centre de l'élément au milieu de la zone d'affichage. - **xMidYMid** (_par défaut_) - Force la mise à l'échelle uniforme. Aligne horizontalement le centre de l'élément au milieu de la zone d'affichage. Aligne verticalement le centre de l'élément au milieu de la zone d'affichage. - **xMaxYMid** - Force la mise à l'échelle uniforme. Aligne le côté droit de l'élément à droite de la zone d'affichage. Aligne verticalement le centre de l'élément au milieu de la zone d'affichage. - **xMinYMax** - Force la mise à l'échelle uniforme. Aligne le côté gauche de l'élément à gauche de la zone d'affichage. Aligne le côté bas de l'élément en bas de la zone d'affichage. - **xMidYMax** - Force la mise à l'échelle uniforme. Aligne horizontalement le centre de l'élément au milieu de la zone d'affichage. Aligne le côté bas de l'élément en bas de la zone d'affichage. - **xMaxYMax** - Force la mise à l'échelle uniforme. Aligne le côté droit de l'élément à droite de la zone d'affichage. Aligne le côté bas de l'élément en bas de la zone d'affichage. - Meet ou slice - : La valeur _meet_ ou _slice_ est optionnelle. Les deux valeurs possibles sont: - **meet** (_par défaut_) - Mettre à l'échelle l'image tel que: - les proportions sont préservées - la [`viewBox`](/fr/docs/Web/SVG/Attribute/viewBox) est entièrement visible dans la zone d'affichage - la [`viewBox`](/fr/docs/Web/SVG/Attribute/viewBox) est agrandie autant que possible, tout en respectant les autres critères Autrement dit, si les proportions du contenu ne correspondent pas à la zone d'affichage, la zone d'affichage sera agrandie au-delà de la [`viewBox`](/fr/docs/Web/SVG/Attribute/viewBox) (la zone dans laquelle sera dessinée la [`viewBox`](/fr/docs/Web/SVG/Attribute/viewBox) sera plus petite que la zone d'affichage). - **slice** - Mettre à l'échelle l'image tel que: - les proportions sont préservées - la zone d'affichage est entièrement remplie par la [`viewBox`](/fr/docs/Web/SVG/Attribute/viewBox) - la [`viewBox`](/fr/docs/Web/SVG/Attribute/viewBox) est réduite autant que possible, tout en respectant les autres critères Autrement dit, si les proportions du contenu ne correspondent pas à la zone d'affichage, la [`viewBox`](/fr/docs/Web/SVG/Attribute/viewBox) sera agrandie au-delà de la zone d'affichage (la zone dans laquelle sera dessinée la [`viewBox`](/fr/docs/Web/SVG/Attribute/viewBox) sera plus grande que la zone d'affichage). ## Éléments Sept éléments utilisent cet attribut: [``](/fr/docs/Web/SVG/Element/svg), [``](/fr/docs/Web/SVG/Element/symbol), [``](/fr/docs/Web/SVG/Element/image), [``](/fr/docs/Web/SVG/Element/feImage), [``](/fr/docs/Web/SVG/Element/marker), [``](/fr/docs/Web/SVG/Element/pattern), and [``](/fr/docs/Web/SVG/Element/view). ### feImage Pour [``](/fr/docs/Web/SVG/Element/feImage), `preserveAspectRatio` définit comment l'image doit être ajustée dans le rectangle défini par l'élément ``.
Valeur <align> <meetOrSlice>?
Valeur par défaut xMidYMid meet
Animation Oui
### image Pour [``](/fr/docs/Web/SVG/Element/feImage), `preserveAspectRatio` définit comment l'image doit être ajustée dans le rectangle défini par l'élément ``.
Valeur <align> <meetOrSlice>?
Valeur par défaut xMidYMid meet
Animation Oui
### marker Pour [``](/fr/docs/Web/SVG/Element/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 [``](/fr/docs/Web/SVG/Element/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 [``](/fr/docs/Web/SVG/Element/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 [``](/fr/docs/Web/SVG/Element/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 [``](/fr/docs/Web/SVG/Element/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 |