Start · Sprachen · JavaScript · Referenz · SVGFEMorphologyElement.radiusY

SVGFEMorphologyElement.radiusY

Eigenschaft

Schreibgeschützte Eigenschaft, die als <code>SVGAnimatedNumber</code> die Y-Komponente des <code>radius</code>-Attributs eines <code>&lt;feMorphology&gt;</code>-Elements liefert.

seit JavaScript Baseline: alle modernen Browser Kategorie: webapi

Signatur

SVGFEMorphologyElement.radiusY

Beschreibung

Die Eigenschaft radiusY der Schnittstelle SVGFEMorphologyElement gibt ein SVGAnimatedNumber-Objekt zurück. Es steht für den vertikalen Radius des Filterprimitivs <feMorphology>. Das Primitiv macht Grafiken dicker (operator="dilate") oder dünner (operator="erode").

Im Attribut radius stehen ein oder zwei Zahlen. Bei zwei Werten (radius="3 6") ist der erste der X-Radius und der zweite der Y-Radius. Steht dort nur ein Wert, gilt er für beide Achsen, und radiusY hat dann denselben Wert wie radiusX. Fehlt das Attribut, ist der Wert 0. Das Primitiv ist dann wirkungslos.

Schreibgeschützt ist nur die Eigenschaft selbst, also der Verweis auf das SVGAnimatedNumber-Objekt. Über radiusY.baseVal kann man den Grundwert lesen und auch setzen. radiusY.animVal liefert den Wert, der gerade gilt, einschließlich laufender SMIL-Animationen. So lassen sich Filter in JavaScript auswerten oder zur Laufzeit anpassen, etwa für Hover-Effekte oder Animationen.

Rückgabewert

Typ
SVGAnimatedNumber
Beschreibung
Ein Objekt mit baseVal (Grundwert, beschreibbar) und animVal (aktuell geltender, animierter Wert, nur lesbar). Beide sind vom Typ number.

Beispiele

Y-Radius auslesen

// <svg><filter id="f"><feMorphology id="morph" operator="dilate" radius="2 5"/></filter></svg>
const morph = document.getElementById('morph');
console.log(morph.radiusX.baseVal);
console.log(morph.radiusY.baseVal);
2 5

Nur ein Wert im radius-Attribut

const svgNS = 'http://www.w3.org/2000/svg';
const morph = document.createElementNS(svgNS, 'feMorphology');
morph.setAttribute('radius', '4');
console.log(morph.radiusY.baseVal); // gleicher Wert wie radiusX
morph.removeAttribute('radius');
console.log(morph.radiusY.baseVal); // Standardwert
4 0

Vertikalen Radius mit einem Schieberegler steuern

// <input type="range" id="slider" min="0" max="10" value="0">
const morph = document.querySelector('feMorphology');
const slider = document.getElementById('slider');

slider.addEventListener('input', () => {
  const y = Number(slider.value);
  const x = morph.radiusX.baseVal;
  // Beide Werte über das Attribut setzen: das funktioniert überall zuverlässig
  morph.setAttribute('radius', `${x} ${y}`);
  console.log('radiusY =', morph.radiusY.baseVal);
});
radiusY = 3 (je nach Position des Reglers)

// Wichtig · Fallstricke

  • Schreibgeschützt: Mit morph.radiusY = 5 lässt sich nichts ändern. Im Strict Mode wirft die Zuweisung einen TypeError. Ändern kann man den Wert über radiusY.baseVal oder setAttribute('radius', …).
  • Ein oder zwei Werte: Setzt man radiusY.baseVal, obwohl das Attribut nur einen Wert enthält, verhalten sich die Browser teilweise unterschiedlich. Am sichersten ist es, immer beide Werte über das Attribut zu setzen.
  • Ungültige Werte: Bei negativen Werten ist der Filter wirkungslos. Bei 0 ist das Primitiv laut Spezifikation ebenfalls wirkungslos. Ältere Browser behandeln diesen Fall aber teilweise anders.
  • Leistung: Große Radien auf großen Flächen verursachen viel Rechenaufwand beim Rendern, besonders wenn sie in jedem Animationsschritt geändert werden.
  • Kompatibilität: Wird in allen modernen Browsern (Chrome, Firefox, Safari, Edge) unterstützt.