SVGMaskElement: maskUnits 属性
SVGMaskElement 接口的只读 **maskUnits** 属性反映了 <mask> 元素的 maskUnits 属性,该属性定义了用于元素蒙版的坐标系统。
值
一个 SVGAnimatedEnumeration,表示坐标系。可能的值在 SVGUnitTypes 接口中定义。
0(SVG_UNIT_TYPE_UNKNOWN)-
该类型不是预定义类型之一。
1(SVG_UNIT_TYPE_USERSPACEONUSE)-
对应于
maskUnits属性的userSpaceOnUse值,意味着元素内的所有坐标都引用蒙版创建时定义的用户的坐标系统。这是默认值。 2(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX)-
对应于该属性的
objectBoundingBox值,意味着元素内的所有坐标都相对于应用蒙版的元素的边界框。这意味着坐标系统的原点是对象边界框的左上角,对象边界框的宽度和高度被视为长度为 1 单位值。
示例
html
<div>
<svg
viewBox="0 0 100 100"
height="200"
width="200"
xmlns="http://www.w3.org/2000/svg">
<mask
id="mask1"
maskUnits="userSpaceOnUse"
x="20%"
y="20%"
width="60%"
height="60%">
<rect fill="black" x="0" y="0" width="100%" height="100%" />
<circle fill="white" cx="50" cy="50" r="35" />
</mask>
<mask
id="mask2"
maskUnits="objectBoundingBox"
x="20%"
y="20%"
width="60%"
height="60%">
<rect fill="black" x="0" y="0" width="100%" height="100%" />
<circle fill="white" cx="50" cy="50" r="35" />
<animate
attributeName="maskUnits"
values="objectBoundingBox;userSpaceOnUse"
dur="1s"
repeatCount="indefinite" />
</mask>
<!-- Some reference rect to materialized the mask -->
<rect id="r1" x="0" y="0" width="45" height="45" />
<rect id="r2" x="0" y="55" width="45" height="45" />
<rect id="r3" x="55" y="55" width="45" height="45" />
<rect id="r4" x="55" y="0" width="45" height="45" />
<!-- The first 3 rect are masked with useSpaceOnUse units -->
<use mask="url(#mask1)" href="#r1" fill="blue" />
<use mask="url(#mask1)" href="#r2" fill="green" />
<use mask="url(#mask1)" href="#r3" fill="yellow" />
<!-- The last rect is masked with objectBoundingBox units -->
<use mask="url(#mask2)" href="#r4" fill="lightblue" />
</svg>
</div>
<pre id="log"></pre>
js
const unitType = ["unknown", "userSpaceOnUse", "objectBoundingBox"];
const mask = document.getElementById("mask2");
const log = document.getElementById("log");
function displayLog() {
const baseValue = unitType[mask.maskUnits.baseVal];
const animValue = unitType[mask.maskUnits.animVal];
log.textContent = `The top-right 'maskUnits.baseVal' coord system : ${baseValue}\n`;
log.textContent += `The top-right 'maskUnits.animVal' coord system : ${animValue}`;
requestAnimationFrame(displayLog);
}
displayLog();
规范
| 规范 |
|---|
| CSS 蒙版模块 Level 1 # dom-svgmaskelement-maskunits |
浏览器兼容性
加载中…