When we declare variable in CSS, why we do write:
:root
{
--bgcolor:orange;
}
/* instead of */
*
{
--bgcolor:orange;
}
What is the difference between both of those things?
CodePudding user response:
:root
selects the root element of the document based on it's format. It exists as CSS can be used in other document formats (SVG, XML).
*
would apply the css to every element on the page. This is usually reserved for normalisation, fonts etc.
CodePudding user response:
This is because :root
is simply a psuedo selector for the <html>
element. When setting CSS custom properties/vars, they are being set on the root element - think of it like a global variable.
If you use *
(universal selector) - it's setting the custom property/var on EVERY element (e.g., div
, p
, span
, ect.) in the DOM.
Using :root
is simply allowing all children elements access to that property/var without the unnecessary overhead of computing that for all elements of a DOM.