Signatur
Beschreibung
Die Eigenschaft x gehört zum Interface SVGFEGaussianBlurElement, das im DOM ein <feGaussianBlur>-Element darstellt. Sie spiegelt das SVG-Attribut x wider. Dieses legt die linke Kante des Filter-Primitive-Teilbereichs fest, also des Rechtecks, auf das der Weichzeichner-Effekt beschränkt wird.
Der Rückgabewert ist ein SVGAnimatedLength-Objekt und keine einfache Zahl. Über baseVal erreichst du den statischen Grundwert, über animVal den aktuellen, eventuell per SMIL animierten Wert. Beide sind vom Typ SVGLength und bieten value (in Benutzereinheiten), valueInSpecifiedUnits, unitType und valueAsString.
Wie x ausgewertet wird, hängt vom Attribut primitiveUnits des übergeordneten <filter> ab. Bei userSpaceOnUse (Standard) gilt der Wert im Benutzerkoordinatensystem. Bei objectBoundingBox ist er ein Bruchteil bzw. Prozentwert der Bounding-Box des gefilterten Elements. Fehlt das Attribut, beträgt der Standardwert 0% des Filterbereichs.
Die Eigenschaft selbst kann nicht neu zugewiesen werden. Den Wert änderst du über x.baseVal.value, x.baseVal.newValueSpecifiedUnits() oder direkt mit setAttribute('x', …).
Rückgabewert
baseVal (Grundwert) und animVal (animierter Wert), beide vom Typ SVGLength. Sie beschreiben die x-Koordinate des Filter-Primitive-Teilbereichs.Beispiele
x-Wert eines feGaussianBlur auslesen
// Zur Laufzeit ein SVG mit Filter erzeugen
document.body.insertAdjacentHTML('beforeend', `
<svg width="200" height="120">
<filter id="blur">
<feGaussianBlur id="gb" x="10" y="5" width="150" height="100" stdDeviation="4" />
</filter>
<rect x="20" y="20" width="150" height="80" fill="teal" filter="url(#blur)" />
</svg>`);
const blur = document.getElementById('gb');
console.log(blur instanceof SVGFEGaussianBlurElement);
console.log(blur.x.baseVal.value);
console.log(blur.x.animVal.value);
Filterbereich per Grundwert verschieben
const blur = document.querySelector('feGaussianBlur');
// Grundwert in Benutzereinheiten ändern – das Attribut wird automatisch angepasst
blur.x.baseVal.value = 40;
console.log(blur.getAttribute('x'));
// Wert mit Einheit Prozent setzen
blur.x.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE, 25);
console.log(blur.x.baseVal.valueAsString);
Einheit prüfen und Zuweisung an x selbst vermeiden
const blur = document.querySelector('feGaussianBlur');
const { baseVal } = blur.x;
const units = {
[SVGLength.SVG_LENGTHTYPE_NUMBER]: 'Benutzereinheiten',
[SVGLength.SVG_LENGTHTYPE_PERCENTAGE]: 'Prozent',
[SVGLength.SVG_LENGTHTYPE_PX]: 'Pixel'
};
console.log(`x = ${baseVal.valueInSpecifiedUnits} (${units[baseVal.unitType] ?? 'andere Einheit'})`);
// Die Eigenschaft x ist schreibgeschützt: Die Zuweisung bleibt wirkungslos
// (im Strict Mode wird ein TypeError ausgelöst)
try {
'use strict';
blur.x = 99;
} catch (e) {
console.log(e.name);
}
console.log(blur.x instanceof SVGAnimatedLength);
// Wichtig · Fallstricke
- Kein Zahlenwert:
blur.xliefert einSVGAnimatedLength-Objekt. Häufiger Fehler:blur.x + 10stattblur.x.baseVal.value + 10. - Schreibgeschützt: Die Eigenschaft selbst lässt sich nicht ersetzen. Eine Zuweisung wird im nicht-strikten Modus stillschweigend ignoriert und löst im Strict Mode (z. B. in ES-Modulen) einen
TypeErroraus. Ändere stattdessenbaseVal. animValist nur lesbar: WeranimVal.valuesetzt, löst einen Fehler aus (NoModificationAllowedError).- Relative Einheiten: Bei Prozentwerten oder
primitiveUnits="objectBoundingBox"kannbaseVal.valuevom sichtbaren Ergebnis abweichen oder sich erst nach dem Layout auflösen. Wenn die angegebene Einheit wichtig ist, nutzevalueInSpecifiedUnitsundunitType. - Clipping: Ein zu kleiner Teilbereich schneidet den Weichzeichner hart ab. Der Blur reicht über die Kanten des Objekts hinaus, also sollte der Bereich großzügig bemessen sein.
- Kompatibilität: Die Eigenschaft wird in allen modernen Browsern unterstützt (Chrome, Firefox, Safari, Edge). Sie stammt aus dem gemeinsamen Mixin
SVGFilterPrimitiveStandardAttributesund existiert gleichermaßen bei allenSVGFE*Element-Interfaces.