Signatur
Beschreibung
Die Eigenschaft width des SVGFEGaussianBlurElement steht für das width-Attribut des Elements <feGaussianBlur>. Dieses Attribut legt die Breite des Filterprimitiv-Teilbereichs (filter primitive subregion) fest, also des Rechtecks, in dem das Ergebnis des Weichzeichners berechnet und abgeschnitten wird.
Zurückgegeben wird ein SVGAnimatedLength-Objekt. Die Eigenschaft selbst ist schreibgeschützt, der Wert lässt sich aber über width.baseVal (ein SVGLength) ändern. width.animVal liefert den aktuellen, gegebenenfalls durch SMIL-Animation veränderten Wert.
Fehlt das Attribut, gilt als Standardwert 100% der Filterregion. Wie Prozent- und Zahlenwerte ausgelegt werden, hängt vom Attribut primitiveUnits des übergeordneten <filter>-Elements ab (userSpaceOnUse oder objectBoundingBox).
In der Praxis braucht man die Eigenschaft, um den Wirkungsbereich eines Weichzeichners per Skript zu lesen oder anzupassen, etwa damit ein Schatten- oder Leuchteffekt nicht an den Rändern abgeschnitten wird.
Rückgabewert
baseVal (veränderbarer Grundwert als SVGLength) und animVal (schreibgeschützter, animierter Wert als SVGLength).Beispiele
Breite eines Weichzeichner-Primitivs auslesen
const svgNS = 'http://www.w3.org/2000/svg';
const svg = document.createElementNS(svgNS, 'svg');
svg.innerHTML = `
<filter id="blur" primitiveUnits="userSpaceOnUse">
<feGaussianBlur stdDeviation="4" x="0" y="0" width="200" height="100" />
</filter>`;
document.body.append(svg);
const blur = svg.querySelector('feGaussianBlur');
console.log(blur.width.baseVal.value);
console.log(blur.width.baseVal.unitType === SVGLength.SVG_LENGTHTYPE_NUMBER);
Breite per Skript ändern
const blur = document.querySelector('#blur feGaussianBlur');
// Direkt als Zahl in Benutzereinheiten setzen
blur.width.baseVal.value = 320;
console.log(blur.getAttribute('width'));
// Als Prozentwert setzen
blur.width.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE, 150);
console.log(blur.getAttribute('width'));
Standardwert ohne gesetztes Attribut
const svgNS = 'http://www.w3.org/2000/svg';
const blur = document.createElementNS(svgNS, 'feGaussianBlur');
const { baseVal } = blur.width;
console.log(baseVal.unitType === SVGLength.SVG_LENGTHTYPE_PERCENTAGE);
console.log(baseVal.valueInSpecifiedUnits);
// Wichtig · Fallstricke
- Schreibgeschützt: Eine Zuweisung wie
blur.width = 100hat keine Wirkung (im Strict Mode wird einTypeErrorausgelöst). Ändern lässt sich der Wert nur überblur.width.baseValodersetAttribute('width', …). - Einheiten:
baseVal.valueliefert den Wert in Benutzereinheiten. Bei Prozentwerten braucht die Umrechnung einen Bezugskontext. Für den eingegebenen Wert selbst eignet sichvalueInSpecifiedUnitsbesser. - Abschneiden: Ist
widthzu klein gewählt, wird der Weichzeichner an den Rändern hart abgeschnitten. Auch daswidthdes übergeordneten<filter>begrenzt den Effekt. animValist schreibgeschützt und spiegelt nur SMIL-Animationen wider, keine CSS-Übergänge.- Wird von allen modernen Browsern unterstützt. Die Eigenschaft stammt aus der gemeinsamen Schnittstelle
SVGFilterPrimitiveStandardAttributes.