Oui, vous pouvez le faire, mais seulement si #b
est après #a
dans le HTML.
Si #b
vient immédiatement après #a
: http://jsfiddle.net/u7tYE/
#a:hover + #b {
background: #ccc
}
Div A
Div B
Cela utilise le combinateur de frères adjacents (+
).
Si d'autres éléments se trouvent entre #a
et #b
, vous pouvez utiliser ceci: http://jsfiddle.net/u7tYE/1/
#a:hover ~ #b {
background: #ccc
}
Div A
autres éléments aléatoires
autres éléments aléatoires
autres éléments aléatoires
Div B
Cela utilise le combinateur de frères généraux (~
).
Les deux +
et ~
fonctionnent dans tous les navigateurs modernes et IE7+
Si #b
est un descendant de #a
, vous pouvez simplement utiliser #a:hover #b
.
ALTERNATIVE : Vous pouvez utiliser uniquement du CSS pur pour cela en positionnant le deuxième élément avant le premier. Le premier div est le premier dans le balisage, mais positionné à droite ou en dessous du second. Cela fonctionnera comme s'il s'agissait d'un précédent frère.
0 votes
En utilisant flexbox, vous pouvez survoler d'autres éléments même s'ils (semblent) être placés avant celui survolé dans le DOM. Consultez mon widget de notation en pur CSS.