The preserveAspectRatio
attribute indicates how an element with a viewBox providing a given aspect ratio must fit into a viewport with a different aspect ratio.
Because the aspect ratio of an SVG image is defined by the viewBox
attribute, if this attribute isn't set, the preserveAspectRatio
atttribute has no effect (with one exception, the <image>
element, as described below).
<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> <!-- (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>
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:
viewBox
doesn't match the aspect ratio of the viewport. The alignment value must be one of the following keywords: <align>
is none
, then the optional <meetOrSlice>
value is ignored.<min-x>
of the element's viewBox
with the smallest X value of the viewport.<min-y>
of the element's viewBox
with the smallest Y value of the viewport.viewBox
with the midpoint X value of the viewport.<min-y>
of the element's viewBox
with the smallest Y value of the viewport.<min-x>+<width>
of the element's viewBox
with the maximum X value of the viewport.<min-y>
of the element's viewBox
with the smallest Y value of the viewport.<min-x>
of the element's viewBox
with the smallest X value of the viewport.viewBox
with the midpoint Y value of the viewport.viewBox
with the midpoint X value of the viewport.viewBox
with the midpoint Y value of the viewport.<min-x>+<width>
of the element's viewBox
with the maximum X value of the viewport.viewBox
with the midpoint Y value of the viewport.<min-x>
of the element's viewBox
with the smallest X value of the viewport.<min-y>+<height>
of the element's viewBox
with the maximum Y value of the viewport.viewBox
with the midpoint X value of the viewport.<min-y>+<height>
of the element's viewBox
with the maximum Y value of the viewport.<min-x>+<width>
of the element's viewBox
with the maximum X value of the viewport.<min-y>+<height>
of the element's viewBox
with the maximum Y value of the viewport.viewBox
is visible within the viewportviewBox
is scaled up as much as possible, while still meeting the other criteriaviewBox
(i.e., the area into which the viewBox
will draw will be smaller than the viewport).viewBox
viewBox
is scaled down as much as possible, while still meeting the other criteriaviewBox
does not match the viewport, some of the viewBox
will extend beyond the bounds of the viewport (i.e., the area into which the viewBox
will draw is larger than the viewport).Seven elements are using this attribute: <svg>
, <symbol>
, <image>
, <feImage>
, <marker>
, <pattern>
, and <view>
.
For <feImage>
, preserveAspectRatio
defines how the referenced image should be fit in the rectangle define by the <feImage>
element.
Value | <align> <meetOrSlice>? |
---|---|
Default value |
xMidYMid meet
|
Animatable | Yes |
For <feImage>
, preserveAspectRatio
defines how the referenced image should be fit in the rectangle define by the <image>
element.
Value | <align> <meetOrSlice>? |
---|---|
Default value |
xMidYMid meet
|
Animatable | Yes |
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 |
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 |
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 |
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 |
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 | Status | Comment |
---|---|---|
Filter Effects Module Level 1 The definition of 'preserveAspectRatio' in that specification. | Working Draft | |
Scalable Vector Graphics (SVG) 2 The definition of 'preserveAspectRatio' in that specification. | Candidate Recommendation | |
Scalable Vector Graphics (SVG) 1.1 (Second Edition) The definition of 'preserveAspectRatio' in that specification. | Recommendation | Initial definition |
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/preserveAspectRatio