Start · Sprachen · JavaScript · Referenz · SVGFEMorphologyElement.radiusX

SVGFEMorphologyElement.radiusX

Eigenschaft

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

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

SVGFEMorphologyElement.radiusX

Beschreibung

Die Eigenschaft radiusX der Schnittstelle SVGFEMorphologyElement gibt ein SVGAnimatedNumber-Objekt zurück, das die horizontale Komponente des radius-Attributs eines <feMorphology>-Filterprimitivs abbildet. Der Filter macht Formen und Text über operator="erode" dünner oder über operator="dilate" dicker. Der Radius legt fest, wie stark das passiert.

Das Attribut radius nimmt eine oder zwei Zahlen an. Bei einer Zahl gilt sie für beide Achsen, dann sind radiusX und radiusY gleich. Bei zwei Zahlen, zum Beispiel radius="4 1", ist die erste der X-Radius und die zweite der Y-Radius. Fehlt das Attribut, ist der Wert 0. Dann ist der Filter wirkungslos.

Die Eigenschaft selbst ist schreibgeschützt, du kannst ihr also kein neues Objekt zuweisen. Über radiusX.baseVal liest du den Wert aus dem Attribut. radiusX.animVal liefert den aktuellen, eventuell per SMIL animierten Wert. Wenn du den Radius ändern willst, setzt du am besten setAttribute("radius", ...). So bleiben X- und Y-Wert zuverlässig gleich aufgeteilt.

Rückgabewert

Typ
SVGAnimatedNumber
Beschreibung
Objekt mit baseVal (Wert aus dem Attribut, number) und animVal (aktueller, eventuell animierter Wert, nur lesbar).

Beispiele

X-Radius aus dem Attribut auslesen

const svgNS = 'http://www.w3.org/2000/svg';
const morph = document.createElementNS(svgNS, 'feMorphology');
morph.setAttribute('operator', 'dilate');
morph.setAttribute('radius', '4 1');

console.log(morph.radiusX.baseVal); // X-Komponente
console.log(morph.radiusY.baseVal); // Y-Komponente
4 1

Ein Wert gilt für beide Achsen

const morph = document.createElementNS('http://www.w3.org/2000/svg', 'feMorphology');
morph.setAttribute('radius', '3');

console.log(morph.radiusX.baseVal, morph.radiusY.baseVal);

// Ohne radius-Attribut
morph.removeAttribute('radius');
console.log(morph.radiusX.baseVal);
3 3 0

Konturstärke per Schieberegler steuern

// HTML: <svg><filter id="bold"><feMorphology id="m" operator="dilate" radius="1"/></filter>
//        <text x="10" y="40" filter="url(#bold)">Hallo</text></svg>
//        <input type="range" id="slider" min="0" max="5" step="0.5" value="1">
const morph = document.querySelector('#m');
const slider = document.querySelector('#slider');

slider.addEventListener('input', () => {
  // nur horizontal verbreitern, vertikal fest bei 0.5
  morph.setAttribute('radius', `${slider.value} 0.5`);
  console.log('radiusX =', morph.radiusX.baseVal);
});
radiusX = 2.5 (je nach Reglerstellung)

// Wichtig · Fallstricke

  • radiusX ist schreibgeschützt. Eine Zuweisung wie morph.radiusX = 5 hat keine Wirkung und löst im Strict Mode einen TypeError aus. Nimm stattdessen setAttribute('radius', ...).
  • Negative Werte sind ein Fehler und schalten den Filtereffekt ab. Der Wert 0 schaltet den Effekt ebenfalls ab. In älteren Spezifikationen und manchen Browsern wird das Element in diesen Fällen durchsichtig dargestellt.
  • Große Radien kosten viel Rechenzeit, vor allem wenn der Filter auf großen Flächen liegt oder animiert wird.
  • SVG-Elemente musst du mit document.createElementNS und dem SVG-Namensraum erzeugen. Mit createElement fehlt die Eigenschaft.
  • Die Eigenschaft wird von allen modernen Browsern unterstützt (Chrome, Firefox, Safari, Edge).