preserveAspectRatio
O atributo preserveAspectRatio
indica como um elemento com uma viewBox, fornecendo uma determinada proporção deve se ajustar a uma viewport com uma proporção diferente.
Because the aspect ratio of an SVG image is defined by the viewBox (en-US)
attribute, if this attribute isn't set, the preserveAspectRatio
attribute has no effect (with one exception, the <image>
element, as described below).
Example
html
<svg viewBox="-1 -1 162 92" xmlns="https://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>
<!-- (width>height) 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>
<!-- (width>height) 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>
<!-- (width<height) 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>
<!-- (width<height) 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>
Syntax
preserveAspectRatio="<align> [<meetOrSlice>]"
Its value is made of one or two keywords: A required alignment value and an optional "meet or slice" reference as described below:
- Alignment value
-
The alignment value indicates whether to force uniform scaling and, if so, the alignment method to use in case the aspect ratio of the
viewBox (en-US)
doesn't match the aspect ratio of the viewport. The alignment value must be one of the following keywords:-
none
Do not force uniform scaling. Scale the graphic content of the given element non-uniformly if necessary such that the element's bounding box exactly matches the viewport rectangle. Note that if
<align>
isnone
, then the optional<meetOrSlice>
value is ignored. -
xMinYMin - Force uniform scaling.
Align the
<min-x>
of the element'sviewBox (en-US)
with the smallest X value of the viewport. Align the<min-y>
of the element'sviewBox (en-US)
with the smallest Y value of the viewport. -
xMidYMin - Force uniform scaling.
Align the midpoint X value of the element's
viewBox (en-US)
with the midpoint X value of the viewport. Align the<min-y>
of the element'sviewBox (en-US)
with the smallest Y value of the viewport. -
xMaxYMin - Force uniform scaling.
Align the
<min-x>+<width>
of the element'sviewBox (en-US)
with the maximum X value of the viewport. Align the<min-y>
of the element'sviewBox (en-US)
with the smallest Y value of the viewport. -
xMinYMid - Force uniform scaling.
Align the
<min-x>
of the element'sviewBox (en-US)
with the smallest X value of the viewport. Align the midpoint Y value of the element'sviewBox (en-US)
with the midpoint Y value of the viewport. -
xMidYMid (the default) - Force uniform scaling.
Align the midpoint X value of the element's
viewBox (en-US)
with the midpoint X value of the viewport. Align the midpoint Y value of the element'sviewBox (en-US)
with the midpoint Y value of the viewport. -
xMaxYMid - Force uniform scaling.
Align the
<min-x>+<width>
of the element'sviewBox (en-US)
with the maximum X value of the viewport. Align the midpoint Y value of the element'sviewBox (en-US)
with the midpoint Y value of the viewport. -
xMinYMax - Force uniform scaling.
Align the
<min-x>
of the element'sviewBox (en-US)
with the smallest X value of the viewport. Align the<min-y>+<height>
of the element'sviewBox (en-US)
with the maximum Y value of the viewport. -
xMidYMax - Force uniform scaling.
Align the midpoint X value of the element's
viewBox (en-US)
with the midpoint X value of the viewport. Align the<min-y>+<height>
of the element'sviewBox (en-US)
with the maximum Y value of the viewport. -
xMaxYMax - Force uniform scaling.
Align the
<min-x>+<width>
of the element'sviewBox (en-US)
with the maximum X value of the viewport. Align the<min-y>+<height>
of the element'sviewBox (en-US)
with the maximum Y value of the viewport.
-
none
Do not force uniform scaling. Scale the graphic content of the given element non-uniformly if necessary such that the element's bounding box exactly matches the viewport rectangle. Note that if
- Meet or slice reference
-
The meet or slice reference is optional and, if provided, must be one of the following keywords:
- meet (the default) - Scale the graphic such that:
- aspect ratio is preserved
- the entire
viewBox (en-US)
is visible within the viewport - the
viewBox (en-US)
is scaled up as much as possible, while still meeting the other criteria
viewBox (en-US)
(i.e., the area into which theviewBox (en-US)
will draw will be smaller than the viewport). - slice - Scale the graphic such that:
- aspect ratio is preserved
- the entire viewport is covered by the
viewBox (en-US)
- the
viewBox (en-US)
is scaled down as much as possible, while still meeting the other criteria
viewBox (en-US)
does not match the viewport, some of theviewBox (en-US)
will extend beyond the bounds of the viewport (i.e., the area into which theviewBox (en-US)
will draw is larger than the viewport).
- meet (the default) - Scale the graphic such that:
Elements
feImage
For <feImage>
(en-US), preserveAspectRatio
defines how the referenced image should fit in the rectangle define by the <feImage>
element.
Value | <align> <meetOrSlice>? |
---|---|
Default value | xMidYMid meet |
Animatable | Yes |
image
For <image>
, preserveAspectRatio
defines how the referenced image should fit in the rectangle define by the <image>
element.
Value | <align> <meetOrSlice>? |
---|---|
Default value | xMidYMid meet |
Animatable | Yes |
marker
For <marker>
, preserveAspectRatio
indicates if a uniform scaling must be performed to fit the element viewport.
Value | <align> <meetOrSlice>? |
---|---|
Default value | xMidYMid meet |
Animatable | Yes |
pattern
For <pattern>
, preserveAspectRatio
indicates if a uniform scaling must be performed to fit the element viewport.
Value | <align> <meetOrSlice>? |
---|---|
Default value | xMidYMid meet |
Animatable | Yes |
svg
For <svg>
, preserveAspectRatio
indicates if a uniform scaling must be performed to fit the element viewport.
Value | <align> <meetOrSlice>? |
---|---|
Default value | xMidYMid meet |
Animatable | Yes |
symbol
For <symbol>
, preserveAspectRatio
indicates if a uniform scaling must be performed to fit the element viewport.
Value | <align> <meetOrSlice>? |
---|---|
Default value | xMidYMid meet |
Animatable | Yes |
view
For <view>
, preserveAspectRatio
indicates if a uniform scaling must be performed to fit the element viewport.
Value | <align> <meetOrSlice>? |
---|---|
Default value | xMidYMid meet |
Animatable | Yes |
Specification
Specification | Status | Comment |
---|---|---|
Filter Effects Module Level 1 The definition of 'preserveAspectRatio' in that specification. |
Rascunho atual | |
Scalable Vector Graphics (SVG) 2 The definition of 'preserveAspectRatio' in that specification. |
Candidata a Recomendação | |
Scalable Vector Graphics (SVG) 1.1 (Second Edition) The definition of 'preserveAspectRatio' in that specification. |
Recomendação | Initial definition |