SVGMaskElement:maskContentUnits 屬性

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

SVGMaskElement 介面中只讀的 maskContentUnits 屬性反映了 maskContentUnits 屬性。它指示了用於 <mask> 元素內容的座標系。

注意: 儘管此屬性是隻讀的,但它僅僅是兩個可修改值 baseValanimVal 的容器。

一個 SVGAnimatedEnumeration,表示座標系。可能的值在 SVGUnitTypes 介面中定義。

0 (SVG_UNIT_TYPE_UNKNOWN)

型別不是預定義的型別之一。

1 (SVG_UNIT_TYPE_USERSPACEONUSE)

對應於 maskContentUnits 屬性的值 userSpaceOnUse,表示元素內的所有座標都引用建立蒙版時定義的使用者的座標系。這是預設值。

2 (SVG_UNIT_TYPE_OBJECTBOUNDINGBOX)

對應於該屬性的值 objectBoundingBox,表示元素內的所有座標都相對於應用蒙版的元素的邊界框。這意味著座標系的原點是物件邊界框的左上角,並且物件邊界框的寬度和高度被視為長度為 1 單位值。

示例

html
<div>
  <svg
    viewBox="0 0 100 100"
    width="150"
    height="150"
    xmlns="http://www.w3.org/2000/svg">
    <mask id="mask1" maskContentUnits="userSpaceOnUse">
      <rect fill="black" x="0" y="0" width="100%" height="100%" />
      <circle fill="white" cx="50" cy="50" r="35" />
    </mask>

    <mask id="mask2" maskContentUnits="objectBoundingBox">
      <rect fill="black" x="0" y="0" width="100%" height="100%" />
      <circle fill="white" cx=".5" cy=".5" r=".35" />
      <animate
        attributeName="maskContentUnits"
        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="yellow" />
    <use mask="url(#mask1)" href="#r3" fill="green" />

    <!-- 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.maskContentUnits.baseVal];
  const animValue = unitType[mask.maskContentUnits.animVal];
  log.textContent = `The top-right 'maskContentUnits.baseVal' coord system : ${baseValue}\n`;
  log.textContent += `The top-right 'maskContentUnits.animVal' coord system : ${animValue}`;
  requestAnimationFrame(displayLog);
}
displayLog();

規範

規範
CSS 蒙版模組 Level 1
# dom-svgmaskelement-maskcontentunits

瀏覽器相容性

另見