SVGStyleElement
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
* Some parts of this feature may have varying levels of support.
Das SVGStyleElement
Interface entspricht dem SVG <style>
Element.
Instanz-Eigenschaften
Dieses Interface erbt auch Eigenschaften von seinem übergeordneten Interface, SVGElement
.
SVGStyleElement.type
Veraltet-
Ein String, der dem
type
Attribut des angegebenen Elements entspricht. SVGStyleElement.media
-
Ein String, der dem
media
Attribut des angegebenen Elements entspricht. SVGStyleElement.title
-
Ein String, der dem
title
Attribut des angegebenen Elements entspricht. SVGStyleElement.sheet
Schreibgeschützt-
Gibt das
CSSStyleSheet
Objekt zurück, das mit dem angegebenen Element verbunden ist, odernull
, falls keines existiert. SVGStyleElement.disabled
-
Ein boolescher Wert, der anzeigt, ob das zugehörige 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 ein style
Element im SVG-Namespace spezifizieren.
Note:
Document.createElement()
kann nicht verwendet werden, um SVG-Style-Elemente zu erstellen (es gibt einHTMLStyleElement
zurück).
Angenommen, das folgende SVG-Element:
<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:
// 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, das in HTML (oder einer SVG-Datei) definiert wurde, zugreifen, 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 definieren die folgenden HTML einen SVG mit einem Style-Element.
<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önnen Sie Document.querySelector()
wie unten gezeigt verwenden.
const svg = document.querySelector("svg");
const style = svg.querySelector("style");
Alternativ können Sie Document.getElementById()
verwenden, um die Tag-ID anzugeben:
const svg = document.querySelector("svg");
const style = svg.getElementById("circle_style_id");
Oder Sie erhalten einfach das Element aus dem Dokument per ID (in diesem Fall mit document.querySelector()
):
const style = document.querySelector("#circle_style_id");
Eigenschaften abrufen und setzen
Dieses Beispiel demonstriert, wie man die Eigenschaften eines Style-Elements abruft und setzt, welches in diesem Fall in einer SVG-Definition spezifiziert wurde.
HTML
Das HTML enthält eine SVG-Definition für einen <circle>
mit einem <style>
Element, zusammen mit einem HTML <button>
Element, das zum Aktivieren und Deaktivieren des Styles verwendet wird, und ein HTML <textarea>
Element zur Protokollierung der Eigenschaftswerte.
<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 auf dem style
Tag gesetzt haben.
Wir haben type
nicht gesetzt, da es veraltet ist, oder disabled
, da es ein solches Attribut nicht gibt (nur die Eigenschaft auf dem Element).
JavaScript
Der untenstehende Code ruft das style
Element (ein SVGStyleElement
) mit seiner ID ab.
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 Größenänderung des Rahmens und bei Druck auf die Taste aufgerufen.
// 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 setzen wir einen Ereignishandler für die Schaltfläche.
Wenn die Schaltfläche geklickt wird, wird die disabled
Eigenschaft umgeschaltet.
Dies aktualisiert auch das Protokoll und den Button-Text.
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 gezeigt.
Schalten Sie den Button um, um das SVG-Style-Element zu aktivieren und zu deaktivieren.
Wenn der SVG-Style nicht deaktiviert ist, können Sie auch die Fensterbreite ändern, um die Wirkung der media
Eigenschaft auf den Style zu sehen, wenn der Rahmen mit dem Live-Beispiel 600px breit ist.
Spezifikationen
Specification |
---|
Scalable Vector Graphics (SVG) 2 # InterfaceSVGStyleElement |