Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Universal selector, how to exclude some elements

After building a blog last part is to make a universal selector that when hover over it will highlight the elements yellow. however we need to exclude elements like body and html from that behavior. i starter with this

*:hover { background-color:yellow } 

How can I exclude elements from universal selector?

like image 464
Garmagon117 Avatar asked Oct 15 '25 17:10

Garmagon117


1 Answers

If you want to exclude root elements like html/body, you could select all elements within them.

In this case, any of the following would work:

html body *:hover { background-color: yellow }
body *:hover { background-color: yellow }
* * *:hover { background-color: yellow }
:root * *:hover { background-color: yellow }

To exclude other elements, you could use the :not() pseudo-class to negate them.

For instance, you could add an .excluded class to the elements.

html body *:not(.excluded):hover { background-color: yellow }

This will be problematic, though, because the universal selector will be applied to all elements, including elements nested within the .excluded elements.

If there are any nested elements within the body element, the background-color will inadvertently appear to be applied to children elements even if they contain the .excluded class merely because the background-color is added to the parent element.

You could consider using the direct child combinator, > to prevent this to a degree.

html body > *:not(.excluded):hover { background-color: yellow }

Of course, this assumes you only want the background-color applied to direct children in the body element.

In conclusion, you should therefore avoid using the universal selector when possible.

like image 88
Josh Crozier Avatar answered Oct 18 '25 08:10

Josh Crozier



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!