This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
The read-only CSSStyleSheet property cssRules returns a live CSSRuleList which provides a real-time, up-to-date list of every CSS rule which comprises the stylesheet. Each item in the list is a CSSRule defining a single rule.
A live-updating CSSRuleList containing each of the CSS rules making up the stylesheet. Each entry in the rule list is a CSSRule object describing one rule making up the stylesheet.
Individual rules within the stylesheet can then be accessed by index:
const ruleList = document.styleSheets[0].cssRules;
for (let i = 0; i < ruleList.length; i++) {
processRule(ruleList[i]);
}
Rules can also be accessed using for...of:
const ruleList = document.styleSheets[0].cssRules;
for (const rule of ruleList) {
processRule(rule);
}
However, because CSSRule is not a proper array, you can't use forEach().
| Specification |
|---|
| CSS Object Model (CSSOM)> # dom-cssstylesheet-cssrules> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
cssRules |
1 | 12 | 1 | ≤12.1 | 1 | 18 | 4 | ≤12.1 | 1 | 1.0 | 4.4 | 1 |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet/cssRules