CSSStyleSheet: CSSStyleSheet() constructor
The CSSStyleSheet()
constructor creates a new CSSStyleSheet
object which represents a single Stylesheet.
After constructing a stylesheet the CSSStyleSheet.replace()
, CSSStyleSheet.replaceSync()
, CSSStyleSheet.insertRule()
, and CSSStyleSheet.deleteRule()
methods can be used to modify the rules of the new stylesheet.
A stylesheet created using this method is referred to as a "constructed stylesheet". A constructed stylesheet can be shared between a document and its shadow DOM subtrees using ShadowRoot.adoptedStyleSheets
and Document.adoptedStyleSheets
.
Syntax
new CSSStyleSheet()
new CSSStyleSheet(options)
Parameters
options
Optional
-
An object containing the following:
baseURL
Optional
-
A string containing the baseURL
used to resolve relative URLs in the stylesheet.
media
Optional
-
A MediaList
containing a list of media rules, or a string containing a single rule.
disabled
Optional
-
A Boolean
indicating whether the stylesheet is disabled. False by default.
Examples
In the following example, a new CSSStyleSheet
is constructed with a media rule of "print"
. Printing StyleSheet.media
to the console returns a MediaList
with a single entry for this print rule.
let stylesheet = new CSSStyleSheet({ media: "print" });
console.log(stylesheet.media);
Sharing stylesheets with a shadow DOM
The code below shows the sheet being constructed and then CSSStyleSheet.replaceSync()
is called to add a rule to the sheet.
const sheet = new CSSStyleSheet();
sheet.replaceSync("a { color: red; }");
We then create a ShadowRoot
and pass the sheet object to the ShadowRoot.adoptedStyleSheets
property inside an array.
const node = document.createElement("div");
const shadow = node.attachShadow({ mode: "open" });
shadow.adoptedStyleSheets = [sheet];
We can modify the stylesheets after they have been added to the array. Below we append a new rule to the same sheet using CSSStyleSheet.insertRule()
.
sheet.insertRule("* { background-color: blue; }");
The same sheet can be shared with multiple shadow subtrees in the same document. For more examples see ShadowRoot.adoptedStyleSheets
.
Specifications
Browser compatibility
|
Desktop |
Mobile |
|
Chrome |
Edge |
Firefox |
Internet Explorer |
Opera |
Safari |
WebView Android |
Chrome Android |
Firefox for Android |
Opera Android |
Safari on IOS |
Samsung Internet |
CSSStyleSheet |
73The baseURL option property is not supported. See bug 1275639.
|
79The baseURL option property is not supported. See bug 1275639.
|
101 |
No |
53 |
16.4 |
73The baseURL option property is not supported. See bug 1275639.
|
73The baseURL option property is not supported. See bug 1275639.
|
101 |
47 |
16.4 |
9.0 |
See also