files/en-us/web/api/cssstylesheet/addrule/index.md
{{APIRef("CSSOM")}}{{deprecated_header}}
The obsolete {{domxref("CSSStyleSheet")}} interface's
addRule() legacy method adds a new rule to the
stylesheet. You should avoid using this method, and should instead use the more standard
{{domxref("CSSStyleSheet.insertRule", "insertRule()")}} method.
addRule(selector, styleBlock, index)
selector
undefined.styleBlock
selector. The default is the string undefined.index {{optional_inline}}
index is not specified, the next index after the
last item currently in the list is used (that is, the value of
cssStyleSheet.cssRules.length).Always returns -1.
Note that due to somewhat esoteric rules about where you can legally insert rules, it's possible that an exception may be thrown. See {{domxref("CSSStyleSheet.insertRule", "insertRule()")}} for more information.
This method is implemented by browsers by constructing a string using the template
literal `${selector}{${styleBlock}}`, then passing it into the standard
{{domxref("CSSStyleSheet.insertRule", "insertRule()")}} method.
Therefore, given existing code such as the following:
cssStyleSheet.addRule(selector, styles, 0);
You can rewrite this to use the more standard insertRule() like this:
cssStyleSheet.insertRule(`${selector} {${styles}}`, 0);
{{Specifications}}
{{Compat}}