Start · Sprachen · JavaScript · Referenz · SVGComponentTransferFunctionElement.exponent

SVGComponentTransferFunctionElement.exponent

Eigenschaft

Liefert ein schreibgeschütztes <code>SVGAnimatedNumber</code>, das das <code>exponent</code>-Attribut eines Transferfunktions-Elements (<code>&lt;feFuncR&gt;</code> usw.) widerspiegelt.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

SVGComponentTransferFunctionElement.exponent

Beschreibung

Die Eigenschaft exponent gehört zum Interface SVGComponentTransferFunctionElement. Auf dieses Interface gehen die Elemente <feFuncR>, <feFuncG>, <feFuncB> und <feFuncA> innerhalb eines <feComponentTransfer>-Filters zurück. Sie spiegelt das SVG-Attribut exponent wider. Dieses Attribut wird nur ausgewertet, wenn type="gamma" gesetzt ist.

Bei der Gamma-Transferfunktion wird jeder Farbkanalwert C nach der Formel C' = amplitude * pow(C, exponent) + offset umgerechnet. Mit exponent steuern Sie also die Krümmung der Gammakurve. Werte größer als 1 dunkeln die Mitteltöne ab, Werte zwischen 0 und 1 hellen sie auf. Fehlt das Attribut, gilt der Standardwert 1, also eine lineare Abbildung.

Die Eigenschaft liefert keine einfache Zahl, sondern ein SVGAnimatedNumber-Objekt. Über baseVal lesen und schreiben Sie den im Attribut festgelegten Wert. animVal ist schreibgeschützt und enthält den aktuellen, gegebenenfalls per SMIL animierten Wert. Wenn Sie baseVal ändern, wird das Attribut im DOM sofort mitgeändert und der Filter neu gezeichnet. So lassen sich zum Beispiel Helligkeitsregler ohne Neuaufbau des Filters umsetzen.

Rückgabewert

Typ
SVGAnimatedNumber
Beschreibung
Ein Objekt mit baseVal (lesbar und schreibbar, number) und animVal (schreibgeschützt, number). Beide stehen für den Wert des exponent-Attributs, der Standardwert ist 1.

Beispiele

Exponent eines feFuncR-Elements auslesen

const svgNS = 'http://www.w3.org/2000/svg';
const funcR = document.createElementNS(svgNS, 'feFuncR');
funcR.setAttribute('type', 'gamma');
funcR.setAttribute('exponent', '2.2');

console.log(funcR.exponent.baseVal);
console.log(funcR.exponent.animVal);
2.2 2.2

Standardwert ohne gesetztes Attribut

const funcG = document.createElementNS('http://www.w3.org/2000/svg', 'feFuncG');
console.log(funcG.exponent.baseVal);
console.log(funcG.hasAttribute('exponent'));
1 false

Gamma-Regler für ein Bild mit Schieberegler

// HTML:
// <svg width="0" height="0"><filter id="gamma"><feComponentTransfer>
//   <feFuncR type="gamma" exponent="1"/><feFuncG type="gamma" exponent="1"/>
//   <feFuncB type="gamma" exponent="1"/>
// </feComponentTransfer></filter></svg>
// <img src="foto.jpg" style="filter:url(#gamma)">
// <input type="range" id="regler" min="0.2" max="3" step="0.1" value="1">

const funcs = document.querySelectorAll('#gamma feFuncR, #gamma feFuncG, #gamma feFuncB');
const regler = document.querySelector('#regler');

regler.addEventListener('input', () => {
  const wert = Number(regler.value);
  funcs.forEach((fn) => {
    fn.exponent.baseVal = wert; // aktualisiert auch das Attribut
  });
  console.log(funcs[0].getAttribute('exponent'));
});
z. B. "1.5" beim Verschieben des Reglers

// Wichtig · Fallstricke

  • exponent wirkt nur bei type="gamma". Bei identity, table, discrete oder linear wird der Wert ignoriert, auch wenn er gesetzt ist.
  • Eine direkte Zuweisung wie el.exponent = 2 hat keine Wirkung, denn die Eigenschaft selbst ist schreibgeschützt. Schreiben Sie stattdessen el.exponent.baseVal = 2.
  • Die Elemente müssen mit document.createElementNS() und dem SVG-Namensraum erzeugt werden. Mit document.createElement('feFuncR') entsteht ein unbekanntes HTML-Element ohne diese Eigenschaft.
  • Ungültige Attributwerte, etwa exponent="abc", führen in der Regel zum Standardwert 1. Das genaue Verhalten kann sich zwischen den Browsern leicht unterscheiden.
  • Kompatibilität: Die Eigenschaft wird seit vielen Jahren von allen modernen Browsern unterstützt (Chrome, Firefox, Safari, Edge).