Signatur
Beschreibung
Die Eigenschaft in1 des Interfaces SVGFEBlendElement liefert ein SVGAnimatedString-Objekt, das das in-Attribut des zugehörigen <feBlend>-Elements abbildet. Dieses Attribut legt die erste Eingabe des Mischvorgangs fest, also die obere Ebene. Die zweite Eingabe (untere Ebene) steht im Attribut in2 und ist über die Eigenschaft in2 erreichbar.
Als Wert kommen Schlüsselwörter wie SourceGraphic, SourceAlpha, BackgroundImage, FillPaint oder StrokePaint infrage, außerdem der result-Name eines vorherigen Filterprimitivs im selben <filter>. Ist das Attribut leer oder fehlt es, verwendet der Browser beim ersten Primitiv SourceGraphic, bei allen weiteren das Ergebnis des direkt davor stehenden Primitivs.
Schreibgeschützt ist nur die Referenz auf das SVGAnimatedString-Objekt. Den Wert selbst kannst du über in1.baseVal lesen und setzen. in1.animVal gibt den aktuellen, eventuell durch SMIL-Animation veränderten Wert zurück. Brauchbar ist das zum Beispiel, wenn ein Filter zur Laufzeit umgebaut werden soll, etwa um die Eingabequelle je nach Benutzeraktion zu wechseln.
Rückgabewert
baseVal (lesbar und schreibbar, entspricht dem Wert des in-Attributs) und animVal (nur lesbar, aktueller animierter Wert).Beispiele
Eingabe eines feBlend-Primitivs auslesen
document.body.insertAdjacentHTML('beforeend', `
<svg width="0" height="0">
<filter id="mix">
<feFlood flood-color="tomato" result="farbe"/>
<feBlend id="blend" in="SourceGraphic" in2="farbe" mode="multiply"/>
</filter>
</svg>`);
const blend = document.getElementById('blend');
console.log(blend.in1.baseVal);
console.log(blend.in2.baseVal);
console.log(blend.in1 instanceof SVGAnimatedString);
Eingabequelle zur Laufzeit umschalten
const blend = document.querySelector('#blend');
const button = document.createElement('button');
button.textContent = 'Eingaben tauschen';
document.body.append(button);
button.addEventListener('click', () => {
const oben = blend.in1.baseVal;
const unten = blend.in2.baseVal;
// baseVal ist schreibbar – das Attribut wird mit aktualisiert
blend.in1.baseVal = unten;
blend.in2.baseVal = oben;
console.log(blend.getAttribute('in'));
});
Fehlendes in-Attribut erkennen
const ns = 'http://www.w3.org/2000/svg';
const fe = document.createElementNS(ns, 'feBlend');
// Ohne Attribut ist baseVal ein leerer String
const quelle = fe.in1.baseVal || '(implizit: vorheriges Ergebnis bzw. SourceGraphic)';
console.log(quelle);
fe.setAttribute('in', 'SourceAlpha');
console.log(fe.in1.baseVal);
// Wichtig · Fallstricke
- Die Eigenschaft heißt
in1und nichtin, weilinin JavaScript ein reserviertes Schlüsselwort (Operator) ist. Das zugehörige SVG-Attribut heißt trotzdemin.getAttribute('in1')liefert dahernull. - Eine Zuweisung an
blend.in1selbst ist wirkungslos, im Strict Mode wirft sie einenTypeError. Ändere stattdessen immerblend.in1.baseVal. - Zeigt der Wert auf einen
result-Namen, den es nicht gibt, behandeln Browser die Referenz meist wie eine fehlende Angabe. Das Ergebnis kann dann unerwartet aussehen, eine Fehlermeldung gibt es nicht. BackgroundImageundBackgroundAlphawerden von den meisten Browsern nicht unterstützt.- Kompatibilität: Die Eigenschaft wird seit Langem von allen modernen Browsern unterstützt (Chrome, Edge, Firefox, Safari).