Use :hover to modify the css of another class?
There are two approaches you can take, to have a hovered element affect (E
) another element (F
):
F
is a child-element ofE
, orF
is a later-sibling (or sibling's descendant) element ofE
(in thatE
appears in the mark-up/DOM beforeF
):
To illustrate the first of these options (F
as a descendant/child of E
):
.item:hover .wrapper { color: #fff; background-color: #000;}
To demonstrate the second option, F
being a sibling element of E
:
.item:hover ~ .wrapper { color: #fff; background-color: #000;}
In this example, if .wrapper
was an immediate sibling of .item
(with no other elements between the two) you could also use .item:hover + .wrapper
.
References:
It's not possible in CSS at the moment, unless you want to select a child or sibling element (trivial and described in other answers here).
For all other cases you'll need JavaScript. jQuery and frameworks like Angular can tackle this problem with relative ease.
[Edit]
With the new CSS (4) selector :has(), you'll be able to target parent elements/classes, making a CSS-Only solution viable in the near future!
You can do it by making the following CSS. you can put here the css you need to affect child class in case of hover on the root
.root:hover .child { }