Start · Sprachen · JavaScript · Referenz · SVGStyleElement.title

SVGStyleElement.title

Eigenschaft

Liest oder setzt das <code>title</code>-Attribut eines SVG-<code>&lt;style&gt;</code>-Elements. Damit wird das Stylesheet einem benannten Stylesheet-Satz zugeordnet.

seit JavaScript Baseline: alle modernen Browser (SVG 2) Kategorie: webapi

Signatur

SVGStyleElement.title

Beschreibung

Die Eigenschaft title des Interfaces SVGStyleElement spiegelt das Inhaltsattribut title des SVG-Elements <style> wider. Beim Lesen erhältst du den aktuellen Attributwert als String. Fehlt das Attribut, ist das Ergebnis ein leerer String. Beim Schreiben wird das Attribut sofort gesetzt oder überschrieben.

Der Titel hat eine funktionale Bedeutung: Er wird an das erzeugte CSSStyleSheet weitergegeben (sheet.title) und ordnet das Stylesheet einem benannten Stylesheet-Satz zu. Stylesheets ohne Titel sind „persistent“ und gelten immer. Stylesheets mit Titel gehören zu einem bevorzugten oder alternativen Satz. Nutzen kannst du das zum Beispiel für Designvarianten, die sich über das title-Attribut erkennen und ein- oder ausschalten lassen.

Wichtig: Das title-Attribut am <style>-Element hat nichts mit dem SVG-Element <title> zu tun. Letzteres liefert zugängliche Namen und Tooltips für Grafiken. Die Eigenschaft ist kein Tooltip-Text, sondern dient nur der Verwaltung von Stylesheets.

Parameter

Name Typ Default Beschreibung
$value string "" Nur beim Schreiben: der neue Titel. Wird als title-Attribut übernommen. Andere Werte werden in einen String umgewandelt.

Rückgabewert

Typ
string
Beschreibung
Der aktuelle Wert des title-Attributs oder ein leerer String, wenn das Attribut fehlt.

Beispiele

Titel eines SVG-Stylesheets auslesen

// Ein SVG mit titeltragendem <style> erzeugen
document.body.insertAdjacentHTML('beforeend', `
  <svg id="grafik" xmlns="http://www.w3.org/2000/svg" width="100" height="100">
    <style title="Standard">circle { fill: steelblue; }</style>
    <circle cx="50" cy="50" r="40" />
  </svg>`);

const style = document.querySelector('#grafik style');
console.log(style instanceof SVGStyleElement);
console.log(style.title);
console.log(style.sheet?.title);
true Standard Standard

Titel per Skript setzen und entfernen

const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
const style = document.createElementNS('http://www.w3.org/2000/svg', 'style');
style.textContent = 'rect { fill: tomato; }';
svg.append(style);
document.body.append(svg);

console.log(JSON.stringify(style.title)); // noch kein Attribut

style.title = 'Dunkles Design';
console.log(style.getAttribute('title'));

style.removeAttribute('title');
console.log(JSON.stringify(style.title));
"" Dunkles Design ""

Designvarianten über den Titel umschalten

document.body.insertAdjacentHTML('beforeend', `
  <svg id="karte" xmlns="http://www.w3.org/2000/svg" width="120" height="60">
    <style title="hell">rect { fill: #eee; }</style>
    <style title="dunkel">rect { fill: #222; }</style>
    <rect width="120" height="60" />
  </svg>`);

// Nur das Stylesheet mit dem passenden Titel aktivieren
const setzeDesign = (name) => {
  for (const style of document.querySelectorAll('#karte style')) {
    if (style.sheet) style.sheet.disabled = style.title !== name;
  }
};

setzeDesign('dunkel');
console.log([...document.querySelectorAll('#karte style')]
  .map((s) => `${s.title}: ${s.sheet.disabled ? 'aus' : 'an'}`));
["hell: aus", "dunkel: an"]

// Wichtig · Fallstricke

  • Nebenwirkung auf die Darstellung: Ein Titel macht ein Stylesheet zu einem benannten Stylesheet-Satz. Tragen mehrere <style>-Elemente im Dokument unterschiedliche Titel, wendet der Browser in der Regel nur den bevorzugten Satz an, also meist den zuerst gefundenen Titel. Die übrigen werden deaktiviert. Wer den Titel nur als Beschriftung nutzen will, kann dadurch versehentlich Stile verlieren. Nimm dafür lieber ein data-*-Attribut.
  • Nicht mit <title> verwechseln: Tooltips und zugängliche Namen für SVG-Grafiken kommen vom Kindelement <title>, nicht von diesem Attribut.
  • Namensraum beachten: document.createElement('style') erzeugt ein HTMLStyleElement. Für ein SVGStyleElement brauchst du createElementNS('http://www.w3.org/2000/svg', 'style'). Beide Interfaces haben eine title-Eigenschaft mit gleichem Verhalten.
  • Kompatibilität: Die Eigenschaft wird von allen modernen Browsern unterstützt. In SVG 1.1 war sie Teil der Spezifikation, in SVG 2 wurde sie an HTMLStyleElement angeglichen. Sehr alte Engines ohne Unterstützung liefern undefined. Dort hilft getAttribute('title') als Ausweichlösung.