Start · Sprachen · JavaScript · Referenz · SVGAnimatedBoolean.baseVal

SVGAnimatedBoolean.baseVal

Eigenschaft

Liest oder setzt den nicht animierten Basiswert eines animierbaren booleschen SVG-Attributs, z. B. <code>preserveAlpha</code> bei <code>&lt;feConvolveMatrix&gt;</code>.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

SVGAnimatedBoolean.baseVal

Beschreibung

Die Eigenschaft baseVal eines SVGAnimatedBoolean-Objekts enthält den Basiswert eines booleschen SVG-Attributs. Das ist der Wert, der im Markup steht oder per Skript gesetzt wurde. Eine laufende SMIL-Animation (<animate>, <set>) ändert ihn nicht. Den Wert, der gerade tatsächlich wirkt, liefert die schreibgeschützte Schwestereigenschaft animVal.

In der Praxis gibt es heute nur noch ein Attribut, das als SVGAnimatedBoolean bereitgestellt wird: preserveAlpha des Filterelements <feConvolveMatrix> (SVGFEConvolveMatrixElement.preserveAlpha). Das frühere Attribut externalResourcesRequired wurde mit SVG 2 entfernt.

baseVal ist lesbar und beschreibbar. Wenn du true oder false zuweist, schreibt der Browser das Inhaltsattribut automatisch als Zeichenkette "true" bzw. "false" um. Umgekehrt spiegelt baseVal sofort jede Änderung, die du über setAttribute() vornimmst. So kannst du boolesche Attribute typsicher umschalten, ohne selbst Zeichenketten zu vergleichen.

Rückgabewert

Typ
boolean
Beschreibung
Der aktuelle Basiswert des Attributs (true oder false). Fehlt das Attribut, erhältst du den Standardwert laut Spezifikation, bei preserveAlpha also false.

Beispiele

Basiswert von preserveAlpha auslesen

// SVG mit Faltungsfilter dynamisch erzeugen
const svgNS = 'http://www.w3.org/2000/svg';
const conv = document.createElementNS(svgNS, 'feConvolveMatrix');
conv.setAttribute('kernelMatrix', '0 -1 0 -1 5 -1 0 -1 0');

// Attribut nicht gesetzt: Standardwert
console.log(conv.preserveAlpha.baseVal);

conv.setAttribute('preserveAlpha', 'true');
console.log(conv.preserveAlpha.baseVal);
false true

Basiswert per Skript setzen: das Attribut wird mitgeführt

const conv = document.querySelector('#sharpen feConvolveMatrix');

// Alphakanal vom Filter ausnehmen
conv.preserveAlpha.baseVal = true;
console.log(conv.getAttribute('preserveAlpha'));

conv.preserveAlpha.baseVal = false;
console.log(conv.getAttribute('preserveAlpha'));
true false

Umschalter für einen Filter in der Oberfläche

// <svg><filter id="sharpen"><feConvolveMatrix kernelMatrix="0 -1 0 -1 5 -1 0 -1 0"/></filter></svg>
// <label><input type="checkbox" id="alpha"> Alpha erhalten</label>
const conv = document.querySelector('#sharpen feConvolveMatrix');
const checkbox = document.querySelector('#alpha');

// Anfangszustand übernehmen
checkbox.checked = conv.preserveAlpha.baseVal;

checkbox.addEventListener('change', () => {
  conv.preserveAlpha.baseVal = checkbox.checked;
  console.log('preserveAlpha:', conv.preserveAlpha.baseVal);
});
preserveAlpha: true (nach Anhaken)

baseVal und animVal bei einer SMIL-Animation vergleichen

// <feConvolveMatrix id="cm" preserveAlpha="false" kernelMatrix="1 0 0 0 1 0 0 0 1">
//   <set attributeName="preserveAlpha" to="true" begin="0s" dur="5s"/>
// </feConvolveMatrix>
const cm = document.getElementById('cm');

setTimeout(() => {
  console.log('Basis:', cm.preserveAlpha.baseVal);
  console.log('Animiert:', cm.preserveAlpha.animVal);
}, 1000);
Basis: false Animiert: true

// Wichtig · Fallstricke

  • Nicht mit dem Attribut verwechseln: conv.preserveAlpha ist das SVGAnimatedBoolean-Objekt und kein boolescher Wert. if (conv.preserveAlpha) ist deshalb immer wahr. Frage stattdessen conv.preserveAlpha.baseVal ab.
  • Keine Zeichenketten-Logik: getAttribute('preserveAlpha') liefert "false", und diese Zeichenkette ist in JavaScript truthy. baseVal gibt dir dagegen einen echten boolean.
  • Wenn du baseVal einen Wert zuweist, der kein Boolean ist, wird er nach den normalen JS-Regeln umgewandelt. Zum Beispiel ergibt "false" den Wert true.
  • baseVal beeinflusst eine laufende Animation nicht. Für den sichtbar wirksamen Wert liest du animVal. Dieser Wert ist schreibgeschützt.
  • Kompatibilität: Alle aktuellen Browser unterstützen die Eigenschaft. externalResourcesRequired (ebenfalls ein SVGAnimatedBoolean) wurde mit SVG 2 entfernt und ist in modernen Browsern nicht mehr verfügbar.