SVGMaskElement: maskUnits-Eigenschaft
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
Die schreibgeschützte maskUnits
-Eigenschaft der SVGMaskElement
-Schnittstelle spiegelt das maskUnits
-Attribut eines <mask>
-Elements wider, welches das Koordinatensystem definiert, das für die Maske des Elements verwendet wird.
Wert
Ein SVGAnimatedEnumeration
, das das Koordinatensystem darstellt. Die möglichen Werte sind in der SVGUnitTypes
-Schnittstelle definiert:
0
(SVG_UNIT_TYPE_UNKNOWN
)-
Der Typ ist nicht einer der vordefinierten Typen.
1
(SVG_UNIT_TYPE_USERSPACEONUSE
)-
Entspricht einem Wert von
userSpaceOnUse
für dasmaskUnits
-Attribut und bedeutet, dass alle Koordinaten innerhalb des Elements sich auf das Benutzerkoordinatensystem beziehen, wie es definiert wurde, als die Maske erstellt wurde. Es ist der Standardwert. 2
(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
)-
Entspricht einem Wert von
objectBoundingBox
für das Attribut und bedeutet, dass alle Koordinaten innerhalb des Elements relativ zum Begrenzungsrahmen des Elements sind, auf das die Maske angewendet wird. Es bedeutet, dass der Ursprung des Koordinatensystems die obere linke Ecke des Begrenzungsrahmens des Objekts ist und die Breite und Höhe des Begrenzungsrahmens des Objekts als eine Länge von 1 Einheitswert betrachtet werden.
Beispiele
<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>
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();
Spezifikationen
Specification |
---|
CSS Masking Module Level 1 # dom-svgmaskelement-maskunits |
Browser-Kompatibilität
BCD tables only load in the browser