Signatur
Beschreibung
Die Eigenschaft width des Interfaces SVGFETurbulenceElement gibt die Breite des Teilbereichs (filter primitive subregion) zurück, in dem das Turbulenz- bzw. Rauschmuster des <feTurbulence>-Elements erzeugt wird. Sie spiegelt das SVG-Attribut width wider und stammt aus dem Mixin SVGFilterPrimitiveStandardAttributes, das auch x, y, height und result bereitstellt.
Zurückgegeben wird kein einfacher Zahlenwert, sondern ein SVGAnimatedLength-Objekt. Über baseVal liest bzw. setzt man den im Markup (oder per Skript) festgelegten Grundwert, über animVal den aktuell wirksamen Wert, etwa während einer SMIL-Animation. Beide sind SVGLength-Objekte mit Eigenschaften wie value, valueInSpecifiedUnits und unitType.
Die Eigenschaft selbst ist schreibgeschützt: Man kann kein neues Objekt zuweisen. Den Wert ändert man stattdessen über width.baseVal.value, width.baseVal.newValueSpecifiedUnits() oder direkt per setAttribute('width', …). Fehlt das Attribut, gilt als Standardwert 100% der Breite des Filterbereichs.
Rückgabewert
baseVal (Grundwert) und animVal (aktuell animierter Wert), jeweils vom Typ SVGLength.Beispiele
Breite eines feTurbulence-Primitivs auslesen
const svg = `
<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200">
<filter id="rauschen">
<feTurbulence id="turb" type="fractalNoise" baseFrequency="0.05" width="150" height="120" />
</filter>
<rect width="200" height="200" filter="url(#rauschen)" />
</svg>`;
document.body.insertAdjacentHTML('beforeend', svg);
const turb = document.getElementById('turb');
console.log(turb.width instanceof SVGAnimatedLength);
console.log(turb.width.baseVal.value);
console.log(turb.width.animVal.value);
Breite per Skript ändern
const turb = document.querySelector('feTurbulence');
// Wert in Benutzereinheiten setzen
turb.width.baseVal.value = 80;
console.log(turb.getAttribute('width'));
// Wert in Prozent setzen
turb.width.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE, 50);
console.log(turb.getAttribute('width'));
Einheit und Standardwert prüfen
const ns = 'http://www.w3.org/2000/svg';
const turb = document.createElementNS(ns, 'feTurbulence');
// Ohne width-Attribut gilt 100 %
const len = turb.width.baseVal;
const istProzent = len.unitType === SVGLength.SVG_LENGTHTYPE_PERCENTAGE;
console.log(istProzent, len.valueInSpecifiedUnits);
// Wichtig · Fallstricke
- Schreibgeschützt:
turb.width = 100hat keine Wirkung (im Strict Mode einTypeError). Ändern Sie stattdessenwidth.baseValoder das Attribut. baseVal.valuebei Prozentangaben erfordert einen Bezug zum Filterbereich; bei nicht eingehängten Elementen kann der Wert in Benutzereinheiten0oder unerwartet sein. Nutzen Sie dannvalueInSpecifiedUnits.animValist immer schreibgeschützt; Schreibzugriffe werfen einenNoModificationAllowedError.- Die Interpretation der Einheiten hängt vom Attribut
primitiveUnitsdes umgebenden<filter>ab (userSpaceOnUsevs.objectBoundingBox). - Negative Werte sind ungültig und deaktivieren das Primitiv;
0ergibt einen leeren Bereich. - Kompatibilität: In allen modernen Browsern unterstützt (Chrome, Firefox, Safari, Edge).