Start · Sprachen · JavaScript · Referenz · SVGFETurbulenceElement.stitchTiles

SVGFETurbulenceElement.stitchTiles

Eigenschaft

Liefert ein <code>SVGAnimatedEnumeration</code>, das das Attribut <code>stitchTiles</code> eines <code>&lt;feTurbulence&gt;</code>-Filterelements widerspiegelt.

seit JavaScript Baseline: alle Browser (SVG 1.1) Kategorie: webapi

Signatur

get SVGFETurbulenceElement.stitchTiles

Beschreibung

Die schreibgeschützte Eigenschaft stitchTiles der Schnittstelle SVGFETurbulenceElement gibt ein SVGAnimatedEnumeration-Objekt zurück. Es spiegelt das SVG-Attribut stitchTiles des Elements <feTurbulence> wider. Das Attribut legt fest, ob der Browser versucht, an den Kacheln des Rauschmusters nahtlose Übergänge zu erzeugen.

Der Wert ist eine Zahl, die einer Konstante der Schnittstelle entspricht:

  • SVGFETurbulenceElement.SVG_STITCHTYPE_UNKNOWN (0): Wert unbekannt oder ungültig.
  • SVGFETurbulenceElement.SVG_STITCHTYPE_STITCH (1): entspricht stitchTiles="stitch". Die Basisfrequenzen werden so angepasst, dass sich Kachelränder nahtlos zusammenfügen.
  • SVGFETurbulenceElement.SVG_STITCHTYPE_NOSTITCH (2): entspricht stitchTiles="noStitch" (Standardwert). Es wird nicht versucht, die Kacheln nahtlos anzuschließen.

Schreibgeschützt ist nur die Eigenschaft selbst, das Objekt also. Über stitchTiles.baseVal lässt sich der Wert trotzdem lesen und setzen, dabei wird das Attribut im DOM aktualisiert. stitchTiles.animVal enthält den aktuellen Wert inklusive SMIL-Animationen und ist nur lesbar. Sinnvoll ist das zum Beispiel für prozedurale Hintergrundtexturen, die sich als Kachelmuster wiederholen sollen.

Rückgabewert

Typ
SVGAnimatedEnumeration
Beschreibung
Objekt mit baseVal (lesbar und schreibbar, number) und animVal (nur lesbar, number). Die Werte entsprechen den Konstanten SVG_STITCHTYPE_*.

Beispiele

Aktuellen stitchTiles-Wert auslesen

const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
svg.innerHTML = `
  <filter id="noise">
    <feTurbulence baseFrequency="0.05" numOctaves="2" stitchTiles="stitch" />
  </filter>`;
document.body.append(svg);

const turb = svg.querySelector('feTurbulence');
console.log(turb.stitchTiles.baseVal);
console.log(turb.stitchTiles.baseVal === SVGFETurbulenceElement.SVG_STITCHTYPE_STITCH);
1 true

Zahlenwert in lesbaren Namen übersetzen

const stitchName = (el) => {
  switch (el.stitchTiles.animVal) {
    case SVGFETurbulenceElement.SVG_STITCHTYPE_STITCH: return 'stitch';
    case SVGFETurbulenceElement.SVG_STITCHTYPE_NOSTITCH: return 'noStitch';
    default: return 'unbekannt';
  }
};

const turb = document.createElementNS('http://www.w3.org/2000/svg', 'feTurbulence');
// Attribut fehlt -> Standardwert noStitch
console.log(stitchName(turb));
noStitch

Nahtloses Kacheln per Checkbox umschalten

// HTML: <input type="checkbox" id="seamless"> und ein SVG mit <feTurbulence id="turb">
const turb = document.getElementById('turb');
const checkbox = document.getElementById('seamless');

checkbox.addEventListener('change', () => {
  turb.stitchTiles.baseVal = checkbox.checked
    ? SVGFETurbulenceElement.SVG_STITCHTYPE_STITCH
    : SVGFETurbulenceElement.SVG_STITCHTYPE_NOSTITCH;
  // Das DOM-Attribut wird automatisch aktualisiert
  console.log(turb.getAttribute('stitchTiles'));
});
stitch (bei aktivierter Checkbox) noStitch (bei deaktivierter Checkbox)

// Wichtig · Fallstricke

  • Nicht direkt zuweisen: turb.stitchTiles = 1 hat keine Wirkung (im Strict Mode gibt es einen TypeError). Setzen Sie stattdessen stitchTiles.baseVal oder nutzen Sie setAttribute('stitchTiles', 'stitch').
  • Ungültige Werte: Wenn Sie baseVal auf 0 (SVG_STITCHTYPE_UNKNOWN) oder eine unbekannte Zahl setzen, werfen Browser einen Fehler (je nach Implementierung TypeError oder NotSupportedError). Ein ungültiger Attributwert im Markup wird dagegen wie der Standardwert noStitch behandelt.
  • Schreibweise: Das Attribut unterscheidet Groß- und Kleinschreibung (stitchTiles, noStitch). Bei setAttribute auf SVG-Elementen müssen Sie die camelCase-Schreibweise exakt einhalten.
  • Visueller Effekt: stitch passt die Basisfrequenz leicht an die Kachelgröße an. Das Muster kann sich dadurch minimal verändern.
  • Kompatibilität: Wird von allen modernen Browsern unterstützt (Chrome, Edge, Firefox, Safari).