Signatur
Beschreibung
Die schreibgeschützte Eigenschaft in2 des Interfaces SVGFEBlendElement gibt ein SVGAnimatedString-Objekt zurück. Es spiegelt das in2-Attribut des <feBlend>-Filterprimitivs wider. <feBlend> kombiniert zwei Eingabebilder über einen Mischmodus (mode, z. B. multiply oder screen). in ist dabei die obere Ebene, in2 die untere.
Als Wert erlaubt in2 entweder ein vordefiniertes Schlüsselwort (SourceGraphic, SourceAlpha, BackgroundImage, BackgroundAlpha, FillPaint, StrokePaint) oder den result-Namen eines früheren Filterprimitivs im selben <filter>.
„Schreibgeschützt“ heißt hier nur: Man kann der Eigenschaft kein neues Objekt zuweisen. Über in2.baseVal lässt sich der Attributwert trotzdem lesen und ändern. in2.animVal liefert den aktuellen Wert, gegebenenfalls nach einer SMIL-Animation. So kann man die Eingaben eines Filters zur Laufzeit per Skript umverdrahten, etwa um zwischen verschiedenen Hintergrundebenen zu wechseln.
Rückgabewert
baseVal (les- und schreibbarer Attributwert als string) und animVal (schreibgeschützter, aktuell animierter Wert). Fehlt das Attribut, ist baseVal ein leerer String.Beispiele
Zweite Eingabe eines feBlend-Elements auslesen
const svgNS = 'http://www.w3.org/2000/svg';
const svg = document.createElementNS(svgNS, 'svg');
svg.innerHTML = `
<filter id="mix">
<feFlood flood-color="orange" result="flaeche"/>
<feBlend in="SourceGraphic" in2="flaeche" mode="multiply"/>
</filter>`;
document.body.append(svg);
const blend = svg.querySelector('feBlend');
console.log(blend.in2.baseVal);
console.log(blend.in2.animVal);
Eingabe zur Laufzeit umschalten
// Zwischen zwei vorbereiteten Hintergründen wechseln
const blend = document.querySelector('#mix feBlend');
const button = document.querySelector('#toggle');
button.addEventListener('click', () => {
const aktuell = blend.in2.baseVal;
blend.in2.baseVal = aktuell === 'flaeche' ? 'verlauf' : 'flaeche';
console.log(`in2 ist jetzt: ${blend.in2.baseVal}`);
// Das Attribut wird automatisch synchronisiert
console.log(blend.getAttribute('in2'));
});
Schreibschutz der Eigenschaft selbst
'use strict';
const blend = document.createElementNS('http://www.w3.org/2000/svg', 'feBlend');
console.log(blend.in2.baseVal === ''); // Attribut nicht gesetzt
try {
blend.in2 = 'SourceAlpha'; // Zuweisung an das Objekt selbst
} catch (e) {
console.log(e instanceof TypeError);
}
blend.in2.baseVal = 'SourceAlpha'; // richtig
console.log(blend.getAttribute('in2'));
// Wichtig · Fallstricke
- Nicht direkt zuweisen:
blend.in2 = '…'hat keine Wirkung. Im Strict Mode wirft die Zuweisung einenTypeError. Ändern Sie stattdessenblend.in2.baseValoder rufen SiesetAttribute('in2', …)auf. - Standardwert: Fehlt
in2, verwendet der Browser für das erste PrimitivSourceGraphic, sonst das Ergebnis des vorherigen Primitivs.baseValbleibt in diesem Fall trotzdem ein leerer String. - Verweist
in2auf einen nicht vorhandenenresult-Namen, behandeln Browser die Eingabe wie einen fehlenden Wert. Das kann zu unerwarteten Ergebnissen führen, ohne dass eine Fehlermeldung erscheint. BackgroundImageundBackgroundAlphawerden von den meisten Browsern nicht unterstützt.FillPaintundStrokePaintwerden nur eingeschränkt unterstützt.- Die Eigenschaft selbst wird von allen modernen Browsern unterstützt (Chrome, Firefox, Safari, Edge).