SVGMaskElement: maskUnits-Eigenschaft
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
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
userSpaceOnUsefü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
objectBoundingBoxfü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
| Spezifikation |
|---|
| CSS Masking Module Level 1> # dom-svgmaskelement-maskunits> |