Signatur
Beschreibung
Die Eigenschaft x der Schnittstelle SVGFEBlendElement steht für das x-Attribut eines <feBlend>-Elements. Sie gibt die horizontale Koordinate der linken oberen Ecke des Teilbereichs (filter primitive subregion) an, auf den das Filterprimitiv angewendet wird.
Der Rückgabewert ist ein SVGAnimatedLength-Objekt. Es hat zwei Bestandteile: baseVal ist der im Markup gesetzte Grundwert und lässt sich verändern. animVal ist der aktuelle Wert, der sich gerade durch SMIL-Animationen ändern kann, und ist schreibgeschützt. Beide sind SVGLength-Objekte mit den Eigenschaften value (in Benutzereinheiten), valueInSpecifiedUnits, unitType und valueAsString.
Die Eigenschaft selbst ist schreibgeschützt: Du kannst ihr kein neues Objekt zuweisen, das zurückgegebene Objekt aber verändern, z. B. über x.baseVal.value oder newValueSpecifiedUnits(). Wie der Wert ausgelegt wird, hängt vom Attribut primitiveUnits des umgebenden <filter> ab: Bei userSpaceOnUse (Standard) gilt er im Benutzerkoordinatensystem, bei objectBoundingBox als Bruchteil bzw. Prozentwert des Begrenzungsrahmens.
Rückgabewert
SVGAnimatedLength-Objekt. baseVal ist der Grundwert, animVal der aktuell animierte Wert. Ohne gesetztes Attribut gilt der Standardwert 0%.Beispiele
x-Koordinate eines feBlend-Elements auslesen
const svgNS = 'http://www.w3.org/2000/svg';
const svg = document.createElementNS(svgNS, 'svg');
svg.innerHTML = `
<filter id="mix">
<feBlend in="SourceGraphic" in2="BackgroundImage" mode="multiply" x="15" y="10" width="100" height="80"/>
</filter>`;
document.body.append(svg);
const blend = svg.querySelector('feBlend');
console.log(blend.x instanceof SVGAnimatedLength);
console.log(blend.x.baseVal.value);
console.log(blend.x.animVal.value);
x-Position per Skript ändern
const blend = document.querySelector('feBlend');
// Grundwert direkt in Benutzereinheiten setzen
blend.x.baseVal.value = 40;
console.log(blend.getAttribute('x'));
// Wert mit Einheit setzen (Prozent)
blend.x.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE, 25);
console.log(blend.x.baseVal.valueAsString);
Einheitentyp prüfen
const blend = document.querySelector('feBlend');
const { unitType, valueInSpecifiedUnits } = blend.x.baseVal;
const isPercent = unitType === SVGLength.SVG_LENGTHTYPE_PERCENTAGE;
console.log(isPercent ? `${valueInSpecifiedUnits} %` : `${valueInSpecifiedUnits} Benutzereinheiten`);
// Wichtig · Fallstricke
- Schreibgeschützt:
blend.x = 10wird stillschweigend ignoriert (im Strict Mode gibt es einenTypeError). Ändern lässt sich der Wert nur überblend.x.baseValoder mitsetAttribute('x', …). animValist immer schreibgeschützt. Ein Schreibversuch löst eineNoModificationAllowedError-DOMExceptionaus.- Bei Prozent- oder
em-Werten kann das Auslesen vonbaseVal.valueeinen umgerechneten Wert liefern oder Fehler auslösen, solange das Element nicht im gerenderten Dokument hängt. Nutze dannvalueInSpecifiedUnitsodervalueAsString. - Der Wert wirkt sich nur auf den Teilbereich des Filterprimitivs aus, nicht auf die Position der Grafik selbst. Liegt er außerhalb des Filterbereichs (
<filter x/y/width/height>), wird das Ergebnis abgeschnitten. - Kompatibilität: wird von allen modernen Browsern unterstützt (Chrome, Firefox, Safari, Edge). Die Filter-Eingabe
BackgroundImagehingegen wird von den meisten Browsern nicht unterstützt.