Start · Sprachen · JavaScript · Referenz · SVGFECompositeElement.operator

SVGFECompositeElement.operator

Eigenschaft

Liefert ein schreibgeschütztes <code>SVGAnimatedEnumeration</code>, das das <code>operator</code>-Attribut eines <code>&lt;feComposite&gt;</code>-Elements widerspiegelt.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

SVGFECompositeElement.operator

Beschreibung

Die Eigenschaft operator des Interfaces SVGFECompositeElement gibt an, wie ein <feComposite>-Filterprimitiv seine beiden Eingaben in und in2 miteinander verrechnet. Grundlage sind die Porter-Duff-Compositing-Operationen (over, in, out, atop, xor) sowie die Sonderform arithmetic. Bei arithmetic wird das Ergebnis mit den Koeffizienten k1 bis k4 berechnet.

Die Eigenschaft selbst ist schreibgeschützt. Sie gibt ein SVGAnimatedEnumeration-Objekt zurück. Dessen Eigenschaft baseVal enthält den im Markup gesetzten Wert als Zahl und darf geändert werden. animVal enthält den aktuell wirksamen Wert, also auch während einer SMIL-Animation. Die Zahlen entsprechen den Konstanten von SVGFECompositeElement, zum Beispiel SVGFECompositeElement.SVG_FECOMPOSITE_OPERATOR_IN (Wert 2).

Typische Einsatzfälle: Sie lesen mit operator aus, welche Compositing-Operation ein Filter gerade verwendet. Oder Sie schalten sie zur Laufzeit um, etwa für Masken- und Ausstanz-Effekte oder interaktive Filter-Editoren. Ist das Attribut nicht gesetzt, gilt der Standardwert over (1).

  • 0 – SVG_FECOMPOSITE_OPERATOR_UNKNOWN
  • 1 – SVG_FECOMPOSITE_OPERATOR_OVER
  • 2 – SVG_FECOMPOSITE_OPERATOR_IN
  • 3 – SVG_FECOMPOSITE_OPERATOR_OUT
  • 4 – SVG_FECOMPOSITE_OPERATOR_ATOP
  • 5 – SVG_FECOMPOSITE_OPERATOR_XOR
  • 6 – SVG_FECOMPOSITE_OPERATOR_ARITHMETIC

Rückgabewert

Typ
SVGAnimatedEnumeration
Beschreibung
Ein Objekt mit baseVal (schreibbar, number) und animVal (nur lesbar, number). Beide enthalten einen der Konstantenwerte 0–6.

Beispiele

Aktuellen Operator auslesen

// <svg><filter id="f"><feComposite id="comp" in="SourceGraphic" in2="BackgroundImage" operator="xor"/></filter></svg>
const comp = document.getElementById('comp');

console.log(comp.operator.baseVal);
console.log(comp.operator.baseVal === SVGFECompositeElement.SVG_FECOMPOSITE_OPERATOR_XOR);
5 true

Zahlenwert in Attributnamen übersetzen

const OPERATOR_NAMES = ['unknown', 'over', 'in', 'out', 'atop', 'xor', 'arithmetic'];

const describeComposite = (el) => OPERATOR_NAMES[el.operator.animVal] ?? 'unbekannt';

document.querySelectorAll('feComposite').forEach((el) => {
  console.log(`${el.id || '(ohne id)'}: ${describeComposite(el)}`);
});
comp: xor

Operator zur Laufzeit per Auswahlfeld umschalten

// <select id="op"><option value="1">over</option><option value="2">in</option><option value="3">out</option><option value="4">atop</option><option value="5">xor</option></select>
const comp = document.querySelector('#f feComposite');
const select = document.getElementById('op');

select.addEventListener('change', () => {
  // baseVal ist schreibbar; das Attribut wird automatisch aktualisiert
  comp.operator.baseVal = Number(select.value);
  console.log(comp.getAttribute('operator'));
});
z. B. "out" nach Auswahl von out

Auf arithmetic umstellen und Koeffizienten setzen

const comp = document.querySelector('feComposite');

comp.operator.baseVal = SVGFECompositeElement.SVG_FECOMPOSITE_OPERATOR_ARITHMETIC;
// Überblendung: 50 % in + 50 % in2
comp.k1.baseVal = 0;
comp.k2.baseVal = 0.5;
comp.k3.baseVal = 0.5;
comp.k4.baseVal = 0;

console.log(comp.getAttribute('operator'));
arithmetic

// Wichtig · Fallstricke

  • Nicht direkt zuweisen: el.operator = 2 hat keine Wirkung, im Strict Mode wirft es einen TypeError. Ändern Sie stattdessen el.operator.baseVal oder rufen Sie el.setAttribute('operator', 'in') auf.
  • Wenn Sie baseVal auf 0 (UNKNOWN) oder einen ungültigen Wert setzen, werfen Browser in der Regel einen TypeError. Prüfen Sie Werte deshalb vorher.
  • Die Werte sind Zahlen, keine Zeichenketten. Für die lesbare Form nutzen Sie getAttribute('operator').
  • Der in Filter Effects Level 1 ergänzte Operator lighter ist nicht zuverlässig in allen Browsern umgesetzt und hat nicht überall eine DOM-Konstante. Verlassen Sie sich darauf nur nach eigenen Tests.
  • Die Eingabe BackgroundImage als in2 wird von modernen Browsern kaum unterstützt. Verwenden Sie besser benannte Zwischenergebnisse (result).
  • Kompatibilität: operator wird von allen aktuellen Browsern seit Langem unterstützt (Chrome, Edge, Firefox, Safari).