SVGAnimatedPreserveAspectRatio: baseVal 属性

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

SVGAnimatedPreserveAspectRatio 接口的只读属性 baseVal 代表 SVG 元素的 preserveAspectRatio 属性的基础(非动画)值。

一个 SVGPreserveAspectRatio 对象。

示例

考虑以下 SVG

html
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
  <image
    id="myImage"
    href="crows.jpg"
    width="50"
    height="50"
    preserveAspectRatio="xMinYMin meet">
    <animate
      attributeName="preserveAspectRatio"
      from="xMinYMin meet"
      to="xMaxYMax slice"
      dur="5s"
      fill="freeze"
      repeatCount="1" />
  </image>
</svg>

此示例定义了一个 <image> 元素,该元素会为其 preserveAspectRatio 属性设置动画。动画会运行一次,并将 fill 属性设置为 "freeze",因此动画效果在动画完成后会持续存在。

我们在页面加载时立即运行以下代码

js
const image = document.querySelector("#myImage");
const baseVal = image.preserveAspectRatio.baseVal;
const animVal = image.preserveAspectRatio.animVal;

console.log(baseVal.meetOrSlice); // Output: 1 (SVG_MEETORSLICE_MEET)
console.log(animVal.meetOrSlice); // Output: 1 (SVG_MEETORSLICE_MEET)

如果在动画完成后再次记录 animVal.meetOrSlicebaseVal.meetOrSlice 的值,我们将看到以下内容

js
console.log(baseVal.meetOrSlice); // Output: 1 (SVG_MEETORSLICE_MEET)
console.log(animVal.meetOrSlice); // Output: 2 (SVG_MEETORSLICE_SLICE)

请注意,如果我们设置 fill"remove"(或者完全移除 fill,因为 "remove" 是默认值),那么动画效果将在动画完成后被移除,此时 animVal.meetOrSlice 将恢复为 1

规范

规范
Scalable Vector Graphics (SVG) 2
# __svg__SVGAnimatedPreserveAspectRatio__baseVal

浏览器兼容性

另见