Start · Sprachen · JavaScript · Referenz · SVGFEConvolveMatrixElement.orderY

SVGFEConvolveMatrixElement.orderY

Eigenschaft

Schreibgeschützte Eigenschaft, die als <code>SVGAnimatedInteger</code> die vertikale Kernelgröße (Anzahl der Zeilen) aus dem <code>order</code>-Attribut von <code>&lt;feConvolveMatrix&gt;</code> liefert.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

SVGFEConvolveMatrixElement.orderY

Beschreibung

Die Eigenschaft orderY des Interfaces SVGFEConvolveMatrixElement gibt die Anzahl der Zeilen der Faltungsmatrix (Kernel) eines <feConvolveMatrix>-Filterprimitivs zurück. Sie entspricht dem zweiten Wert des Attributs order, das die Form order="orderX [orderY]" hat.

Wird im Attribut nur ein Wert angegeben (z. B. order="3"), gilt dieser für beide Richtungen – orderY ist dann gleich orderX. Fehlt das Attribut ganz, ist der Standardwert 3. Die Kernelgröße bestimmt, wie viele Werte kernelMatrix enthalten muss: genau orderX × orderY.

Der Rückgabewert ist ein SVGAnimatedInteger-Objekt: baseVal enthält den im Markup gesetzten Wert, animVal den aktuellen (ggf. per SMIL animierten) Wert. Die Eigenschaft selbst ist schreibgeschützt; um die Größe zu ändern, setzt man zuverlässig das Attribut order per setAttribute().

Typische Anwendungsfälle sind das Auslesen oder Validieren der Kernelgröße, bevor man eine kernelMatrix dynamisch erzeugt – etwa für Weichzeichner-, Schärfe- oder Kantenerkennungsfilter mit nicht-quadratischen Kerneln (z. B. Bewegungsunschärfe in vertikaler Richtung).

Rückgabewert

Typ
SVGAnimatedInteger
Beschreibung
Objekt mit baseVal (Grundwert aus dem Attribut) und animVal (aktueller, ggf. animierter Wert) – beide eine ganze Zahl > 0 für die Zeilenzahl des Kernels.

Beispiele

orderY aus einem Filter im Dokument auslesen

// <svg><filter id="f"><feConvolveMatrix id="conv" order="3 5"
//   kernelMatrix="1 0 0  1 0 0  1 0 0  1 0 0  1 0 0"/></filter></svg>
const conv = document.getElementById('conv');

console.log(conv.orderX.baseVal);
console.log(conv.orderY.baseVal);
console.log(conv.orderY.animVal);
3 5 5

Nur ein Wert im order-Attribut und Standardwert

const NS = 'http://www.w3.org/2000/svg';

const a = document.createElementNS(NS, 'feConvolveMatrix');
a.setAttribute('order', '4');
console.log(a.orderY.baseVal); // übernimmt orderX

const b = document.createElementNS(NS, 'feConvolveMatrix');
console.log(b.orderY.baseVal); // kein Attribut → Standardwert
4 3

Vertikale Bewegungsunschärfe mit passender kernelMatrix erzeugen

const NS = 'http://www.w3.org/2000/svg';
const svg = document.createElementNS(NS, 'svg');
const filter = document.createElementNS(NS, 'filter');
filter.id = 'motionY';
const conv = document.createElementNS(NS, 'feConvolveMatrix');

// Kernel: 1 Spalte, 7 Zeilen
conv.setAttribute('order', '1 7');

// Matrix-Länge aus orderX × orderY ableiten
const size = conv.orderX.baseVal * conv.orderY.baseVal;
conv.setAttribute('kernelMatrix', Array(size).fill(1).join(' '));

filter.append(conv);
svg.append(filter);
document.body.append(svg);

console.log(`Kernel: ${conv.orderX.baseVal}×${conv.orderY.baseVal}, ${size} Werte`);
Kernel: 1×7, 7 Werte

kernelMatrix gegen orderY validieren

const isValidKernel = (el) => {
  const values = el.getAttribute('kernelMatrix')?.trim().split(/[\s,]+/) ?? [];
  return values.length === el.orderX.baseVal * el.orderY.baseVal;
};

document.querySelectorAll('feConvolveMatrix').forEach((el) => {
  if (!isValidKernel(el)) {
    console.warn('Ungültige kernelMatrix für order', el.getAttribute('order'));
  }
});

// Wichtig · Fallstricke

  • Kein eigenes Attribut: Es gibt kein orderY-Attribut im Markup – nur order="X Y". Ist nur ein Wert angegeben, ist orderY gleich orderX.
  • Schreibgeschützt: Die Eigenschaft selbst kann nicht neu zugewiesen werden. Das Setzen von orderY.baseVal wird nicht in allen Browsern zuverlässig ins Attribut übernommen – ändere die Größe besser über setAttribute('order', …).
  • Ungültige Werte: Werte ≤ 0 oder nicht-ganzzahlige Werte sind ein Fehler; das Filterprimitiv wird dann nicht angewendet (je nach Browser wird das Element transparent dargestellt oder der Filter ignoriert). Stimmt die Anzahl der Werte in kernelMatrix nicht mit orderX × orderY überein, schlägt der Filter ebenfalls fehl.
  • Performance: Große Kernel (z. B. 15×15) sind rechenintensiv, vor allem bei großen Flächen oder Animationen.
  • Kompatibilität: Wird von allen modernen Browsern unterstützt (Chrome, Firefox, Safari, Edge).