SVGStyleElement

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

* Some parts of this feature may have varying levels of support.

Das SVGStyleElement-Interface entspricht dem SVG <style>-Element.

EventTarget Node Element SVGElement SVGStyleElement

Instanz-Eigenschaften

Dieses Interface erbt auch Eigenschaften von seinem übergeordneten Interface, SVGElement.

SVGStyleElement.type Veraltet

Ein String, der dem type-Attribut des gegebenen Elements entspricht.

SVGStyleElement.media

Ein String, der dem media-Attribut des gegebenen Elements entspricht.

SVGStyleElement.title

Ein String, der dem title-Attribut des gegebenen Elements entspricht.

SVGStyleElement.sheet Schreibgeschützt

Gibt das CSSStyleSheet-Objekt zurück, das mit dem gegebenen Element assoziiert ist, oder null, wenn keines vorhanden ist.

SVGStyleElement.disabled

Ein Boolescher Wert, der angibt, ob das assoziierte Stylesheet deaktiviert ist oder nicht.

Instanz-Methoden

Dieses Interface implementiert keine spezifischen Methoden, erbt jedoch Methoden von seinem übergeordneten Interface, SVGElement.

Beispiele

Dynamisches Hinzufügen eines SVG-Style-Elements

Um ein SVG-Style-Element (SVGStyleElement) dynamisch zu erstellen, müssen Sie Document.createElementNS() verwenden und dabei ein style-Element im SVG-Namespace angeben.

Hinweis:>Document.createElement() kann nicht verwendet werden, um SVG-Style-Elemente zu erstellen (es gibt ein HTMLStyleElement zurück).

Angenommen ist das folgende SVG-Element:

html
<svg
  xmlns="http://www.w3.org/2000/svg"
  xmlns:xlink="http://www.w3.org/1999/xlink">
  <circle cx="50" cy="50" r="25" />
</svg>

Sie können ein SVG-Style-Element wie folgt erstellen:

js
// Get the SVG element object by tag name
const svg = document.querySelector("svg");

// Create the `style` element in the SVG namespace
const style = document.createElementNS("http://www.w3.org/2000/svg", "style");
const node = document.createTextNode("circle { fill: red; }");
style.appendChild(node);

// Append the style element to the SVG element
svg.appendChild(style);

Zugriff auf ein vorhandenes SVG-Style

Sie können auf ein SVG-Style-Element zugreifen, das in HTML (oder einer SVG-Datei) definiert wurde, indem Sie die normalen HTML-Methoden zum Abrufen von Tags, IDs usw. verwenden. Dazu gehören: Document.getElementsByTagName(), Document.getElementById(), Document.querySelector(), Document.querySelectorAll() usw.

Beispielsweise betrachten Sie das untenstehende HTML, das eine SVG-Datei mit einem Style-Element definiert.

html
<svg
  xmlns="http://www.w3.org/2000/svg"
  xmlns:xlink="http://www.w3.org/1999/xlink">
  <style id="circle_style_id">
    circle {
      fill: gold;
      stroke: green;
      stroke-width: 3px;
    }
  </style>
  <circle cx="50" cy="50" r="25" />
</svg>

Um das erste style-Element im ersten svg-Element abzurufen, könnten Sie Document.querySelector() wie unten gezeigt verwenden.

js
const svg = document.querySelector("svg");
const style = svg.querySelector("style");

Alternativ könnten Sie Document.getElementById() verwenden und die Tag-ID angeben:

js
const svg = document.querySelector("svg");
const style = svg.getElementById("circle_style_id");

Oder Sie erhalten einfach das Element aus dem Dokument nach ID (in diesem Fall mit document.querySelector()):

js
const style = document.querySelector("#circle_style_id");

Abrufen und Festlegen von Eigenschaften

Dieses Beispiel zeigt, wie man die Eigenschaften eines Style-Elements abrufen und festlegen kann, das in diesem Fall in einer SVG-Definition angegeben wurde.

HTML

Das HTML enthält eine SVG-Definition für einen <circle> mit einem <style>-Element, zusammen mit einem HTML-<button>-Element, das verwendet wird, um den Stil zu aktivieren und zu deaktivieren, sowie ein HTML-<textarea>-Element zum Protokollieren der Eigenschaftswerte.

html
<button>Disable</button>
<textarea id="log" rows="6" cols="90"></textarea>
<svg
  xmlns="http://www.w3.org/2000/svg"
  xmlns:xlink="http://www.w3.org/1999/xlink">
  <style id="circle_style_id" media="all and (min-width: 600px)">
    circle {
      fill: gold;
      stroke: green;
      stroke-width: 3px;
    }
  </style>
  <circle cx="60" cy="60" r="50" />
</svg>

Beachten Sie, dass wir oben das media-Attribut im style-Tag gesetzt haben. Wir haben type nicht gesetzt, da es veraltet ist, oder disabled, weil es kein solches Attribut gibt (nur die Eigenschaft im Element).

JavaScript

Der folgende Code erhält das style-Element (ein SVGStyleElement) unter Verwendung seiner ID.

js
const svg = document.querySelector("svg");
const style = svg.getElementById("circle_style_id");

Wir fügen dann eine Funktion hinzu, um die Style-Eigenschaften zu protokollieren. Diese wird nach der Initialisierung, bei jeder Rahmengrößenänderung und wenn der Button gedrückt wird, aufgerufen.

js
// Get logging text area
const log = document.getElementById("log");

function setLogText() {
  // Log current values of properties
  log.value = `style.media: ${style.media} (frame width: ${window.innerWidth})\n`; // 'all' by default
  log.value += `style.title: ${style.title}\n`; // no default value
  log.value += `style.disabled: ${style.disabled}\n`; // 'false' by default
  log.value += `style.type: ${style.type}\n`; // deprecated (do not use)
  log.value += `style.sheet.rules[0].cssText: ${style.sheet.rules[0].cssText}\n`;
}

// Log initial property values
setLogText();

// Log when the frame resizes
addEventListener("resize", () => {
  setLogText();
});

Zuletzt haben wir einen Ereignishandler für den Button gesetzt. Wenn der Button geklickt wird, wird die disabled-Eigenschaft umgeschaltet. Dies aktualisiert auch das Protokoll und den Button-Text.

js
const button = document.querySelector("button");

button.addEventListener("click", () => {
  style.disabled = !style.disabled;
  button.textContent = style.disabled ? "Enable" : "Disable";

  // Log after button presses
  setLogText();
});

Ergebnis

Das Ergebnis wird unten angezeigt. Schalten Sie den Button um, um das SVG-Style-Element zu aktivieren und zu deaktivieren. Wenn das SVG-Style nicht deaktiviert ist, können Sie auch die Fensterbreite ändern, um die Wirkung der media-Eigenschaft auf den Stil zu sehen, wenn der Rahmen mit dem Live-Beispiel 600px breit ist.

Spezifikationen

Specification
Scalable Vector Graphics (SVG) 2
# InterfaceSVGStyleElement

Browser-Kompatibilität

Siehe auch