Signatur
Beschreibung
Die Eigenschaft y gehört zur Schnittstelle SVGFEGaussianBlurElement und entspricht dem Attribut y des Elements <feGaussianBlur>. Zusammen mit x, width und height legt sie den Filterprimitiv-Teilbereich fest. Das ist das Rechteck, in dem der Weichzeichner berechnet und ausgegeben wird.
Der Rückgabewert ist ein SVGAnimatedLength-Objekt. Die Eigenschaft selbst ist schreibgeschützt, ihr Wert lässt sich aber ändern. Über y.baseVal erhältst du ein beschreibbares SVGLength mit dem Grundwert aus dem Attribut. y.animVal enthält den aktuellen, eventuell durch SMIL-Animation veränderten Wert und kann nur gelesen werden.
Wie der Wert zu deuten ist, hängt vom Attribut primitiveUnits des umgebenden <filter> ab. Bei userSpaceOnUse (Standard) ist er eine Länge im Benutzerkoordinatensystem. Bei objectBoundingBox ist er ein Bruchteil bzw. Prozentsatz des Begrenzungsrahmens des gefilterten Elements. Fehlt das Attribut, beginnt der Teilbereich oben am Filterbereich; baseVal.value liefert dann typischerweise 0, als Standard wirkt aber in Wirklichkeit 0% des Filterbereichs.
Rückgabewert
baseVal (SVGLength, beschreibbar) und animVal (SVGLength, nur lesbar) für die vertikale Position des Filterprimitiv-Teilbereichs.Beispiele
y-Koordinate eines Weichzeichners auslesen
// HTML: <svg><filter id="blur"><feGaussianBlur id="gb" y="20" stdDeviation="4"/></filter></svg>
const blur = document.getElementById('gb');
console.log(blur.y instanceof SVGAnimatedLength);
console.log(blur.y.baseVal.value);
console.log(blur.y.animVal.value);
Teilbereich dynamisch verschieben
const svgNS = 'http://www.w3.org/2000/svg';
const filter = document.createElementNS(svgNS, 'filter');
filter.id = 'weich';
const gb = document.createElementNS(svgNS, 'feGaussianBlur');
gb.setAttribute('stdDeviation', '3');
filter.append(gb);
document.querySelector('svg').append(filter);
// Weichzeichner erst ab y = 50 Benutzereinheiten anwenden
gb.y.baseVal.value = 50;
console.log(gb.getAttribute('y'));
Wert mit Einheit setzen und auslesen
const gb = document.querySelector('feGaussianBlur');
// Prozentangabe relativ zum Filterbereich/Viewport
gb.y.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE, 25);
console.log(gb.y.baseVal.valueAsString);
console.log(gb.y.baseVal.unitType === SVGLength.SVG_LENGTHTYPE_PERCENTAGE);
// Wichtig · Fallstricke
- Einer Eigenschaft ohne Setter kannst du nichts zuweisen:
gb.y = 10bleibt wirkungslos und löst im Strict Mode einenTypeErroraus. Ändere stattdessengb.y.baseVal.valueoder setze das Attribut mitsetAttribute('y', …). animValist nur lesbar. Wer dort schreibt, bekommt eineNoModificationAllowedError-Ausnahme.- Ist
primitiveUnits="objectBoundingBox"gesetzt, gilt ein Wert wie0.2als 20 % des Begrenzungsrahmens und nicht als 0,2 Pixel. - Wird der Teilbereich zu klein gewählt, schneidet er den Weichzeichner sichtbar ab. Achte darauf, dass
yundheightgenug Platz für den Weichzeichnungsradius lassen (etwa das Dreifache vonstdDeviation). - Die Eigenschaft wird in allen modernen Browsern unterstützt.