Dokument: adoptedStyleSheets-Eigenschaft
Baseline 2023Newly available
Since March 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Die adoptedStyleSheets
-Eigenschaft der Document
-Schnittstelle wird verwendet, um ein Array von konstruierten Stylesheets festzulegen, die vom Dokument verwendet werden sollen.
Hinweis:
Ein konstruiertes Stylesheet ist ein Stylesheet, das programmgesteuert mit dem CSSStyleSheet()
constructor erstellt wurde (im Gegensatz zu einem, das von einem User-Agent erstellt wird, wenn ein Stylesheet aus einem Skript importiert, durch <style>
oder @import
importiert oder über <link>
verlinkt wird).
Die gleichen konstruierten Stylesheets können auch mit einer oder mehreren ShadowRoot
-Instanzen über die ShadowRoot.adoptedStyleSheets
-Eigenschaft geteilt werden. Änderungen an einem adoptierten Stylesheet wirken sich auf alle Objekte aus, die dieses Stylesheet übernehmen.
Stylesheets in dieser Eigenschaft werden zusammen mit den anderen Stylesheets des Dokuments unter Verwendung des CSS-Kaskadenalgorithmus ausgewertet. Wenn die Auflösung von Regeln die Reihenfolge von Stylesheets berücksichtigt, wird davon ausgegangen, dass adoptedStyleSheets
nach denen in Document.styleSheets
angeordnet sind.
Nur mit dem CSSStyleSheet()
constructor im Kontext des aktuellen Document
erstellte Stylesheets können übernommen werden.
Wert
Der Wert ist ein Array von CSSStyleSheet
-Instanzen, die mit dem CSSStyleSheet()
-Constructor im Kontext desselben Document
erstellt worden sein müssen.
Wenn das Array geändert werden muss, kann es durch in-place-Methoden wie push()
modifiziert werden. Die CSSStyleSheet
-Instanzen selbst können ebenfalls geändert werden, und diese Änderungen gelten überall dort, wo das Stylesheet übernommen wurde.
In einer früheren Version der Spezifikation war das Array nicht modifizierbar, sodass neue Stylesheets nur hinzugefügt werden konnten, indem ein neues Array zu adoptedStyleSheets
zugewiesen wurde.
Ausnahmen
NotAllowedError
DOMException
-
Eine der
CSSStyleSheet
-Instanzen im Array wurde nicht mit demCSSStyleSheet()
constructor erstellt oder wurde in einem anderen Dokument als dem aktuellen Dokument erstellt, z. B. in einem Frame.
Beispiele
Ein Stylesheet übernehmen
Der Code unten zeigt, wie ein Stylesheet konstruiert wird, und anschließend wird CSSStyleSheet.replaceSync()
aufgerufen, um eine Regel hinzuzufügen. Das Stylesheet wird dann einem Array hinzugefügt und der adoptedStyleSheets
-Eigenschaft zugewiesen.
// Create an empty "constructed" stylesheet
const sheet = new CSSStyleSheet();
// Apply a rule to the sheet
sheet.replaceSync("a { color: red; }");
// Apply the stylesheet to a document
document.adoptedStyleSheets = [sheet];
Wir können eine neue Regel zum Stylesheet mit CSSStyleSheet.insertRule()
hinzufügen.
sheet.insertRule("* { background-color: blue; }");
// The document will now have blue background.
Ein neues Stylesheet hinzufügen
Um ein vollständiges neues Stylesheet zur adoptedStyleSheets
-Eigenschaft hinzuzufügen, müssen wir ein neues kombiniertes Array erstellen und zuweisen. Dies wird unten mit Spread-Syntax demonstriert:
const extraSheet = new CSSStyleSheet();
extraSheet.replaceSync("p { color: green; }");
// Combine the existing sheets and new one
document.adoptedStyleSheets = [...document.adoptedStyleSheets, extraSheet];
Ein Stylesheet mit einem Shadow-DOM teilen
Wir können ein Stylesheet auf ähnliche Weise einem Shadow-Root zuweisen.
// Create an element in the document and then create a shadow root:
const node = document.createElement("div");
const shadow = node.attachShadow({ mode: "open" });
//Adopt the same sheet into the shadow DOM
shadow.adoptedStyleSheets = [sheet];
Spezifikationen
Specification |
---|
CSS Object Model (CSSOM) # dom-documentorshadowroot-adoptedstylesheets |
Browser-Kompatibilität
Report problems with this compatibility data on GitHubdesktop | mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
adoptedStyleSheets |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support