Signatur
Beschreibung
Die Eigenschaft height der Schnittstelle SVGMaskElement gibt die Höhe des Maskenbereichs als SVGAnimatedLength zurück. Zusammen mit x, y und width legt sie das Rechteck fest, innerhalb dessen die Maske wirkt. Außerhalb dieses Bereichs wird das maskierte Element vollständig ausgeblendet.
Die Eigenschaft selbst ist schreibgeschützt. Das Objekt, das sie liefert, hat aber zwei Unterobjekte: baseVal (den Grundwert aus dem Attribut, veränderbar) und animVal (den aktuellen, eventuell durch SMIL animierten Wert, nur lesbar). Beide sind SVGLength-Objekte mit value, valueInSpecifiedUnits, unitType und valueAsString.
Wie der Wert zu verstehen ist, hängt vom Attribut maskUnits ab. Beim Standardwert objectBoundingBox ist die Höhe ein Anteil des umgebenden Rechtecks (Bounding Box) des maskierten Elements. Fehlt das Attribut, gilt die Vorgabe 120%. Bei userSpaceOnUse ist sie eine absolute Länge im Benutzerkoordinatensystem.
Rückgabewert
baseVal und animVal (je ein SVGLength) für das height-Attribut der Maske.Beispiele
Höhe einer Maske auslesen
const svgNS = 'http://www.w3.org/2000/svg';
const svg = document.createElementNS(svgNS, 'svg');
svg.innerHTML = `
<defs>
<mask id="fade" maskUnits="userSpaceOnUse" x="0" y="0" width="200" height="150">
<rect width="200" height="150" fill="white" />
</mask>
</defs>`;
document.body.append(svg);
const mask = svg.querySelector('#fade');
console.log(mask.height.baseVal.value);
console.log(mask.height.baseVal.valueAsString);
Höhe per Skript ändern
const mask = document.querySelector('#fade');
// Grundwert direkt setzen (Benutzereinheiten)
mask.height.baseVal.value = 300;
// Oder mit Einheit: Prozentangabe
mask.height.baseVal.newValueSpecifiedUnits(
SVGLength.SVG_LENGTHTYPE_PERCENTAGE,
80
);
console.log(mask.getAttribute('height'));
Standardwert bei objectBoundingBox
const svgNS = 'http://www.w3.org/2000/svg';
const mask = document.createElementNS(svgNS, 'mask');
// Kein height-Attribut gesetzt → Standardwert 120 %
const len = mask.height.baseVal;
console.log(len.unitType === SVGLength.SVG_LENGTHTYPE_PERCENTAGE);
console.log(len.valueInSpecifiedUnits);
// Wichtig · Fallstricke
- Nicht direkt zuweisen:
mask.height = 100hat keine Wirkung, im Strict Mode wirft es einenTypeError. Ändere den Wert stattdessen übermask.height.baseValoder mitsetAttribute('height', …). maskUnitsbeachten: BeiobjectBoundingBoxwird ein Wert wie1als 100 % der Bounding Box verstanden und nicht als 1 Pixel. Deshalb bekommt man bei relativen Einheiten überbaseVal.valueoft nur eingeschränkt aussagekräftige Werte.animValist nur lesbar: Bei SMIL-Animationen enthältanimValden aktuellen Wert. Schreibversuche lösen einenNoModificationAllowedErroraus.- Keine CSS-Eigenschaft: Anders als bei
<rect>istheightbei<mask>keine CSS-Geometrie-Eigenschaft. Mit CSS lässt sie sich daher nicht überschreiben. - Kompatibilität: Wird von allen aktuellen Browsern unterstützt. Um die Elemente per Skript zu erzeugen, muss man
createElementNSmit dem SVG-Namensraum verwenden.createElement('mask')liefert keinSVGMaskElement.