2017-02-16 5 views
0

Ich versuche, das Geschwister eines Elements zu manipulieren, indem ich sein Geschwisterelement schwebe. Ich mache es wie folgt aus:Geschwister Hover via CSS funktioniert nicht - warum?

.sw_2-technik + .sw_2-emotionen{ 
    background:green; 
} 

.sw_2-emotionen:hover ~ .sw_2-technik{ 
    background:orange; 
} 

Während die HTML-Struktur ein bisschen wie das ist:

<section class="wrapper"> 
<div class="sw_2-technik"></div> 
<div class="sw_2-emotionen"></div> 
</section> 

Während die erste Operation gut funktioniert, die zweite (.sw_2-emotionen: Hover ~ .sw_2 (Technik) macht nichts. Was mache ich da falsch?

Danke!

+1

können Sie nur nächsten Geschwister, aber nicht auf vorherige – LGSon

+0

Wenn Sie eine frühere Geschwister mit CSS ausrichten möchten, hier ist eine saubere und einfache Methode: http://stackoverflow.com/a/36118012/3597276 –

Antwort

2

Geschwisterselektoren beeinflussen nur Elemente, wenn die zweite nach der ersten auf der Seite kommt - nicht umgekehrt.

https://developer.mozilla.org/en-US/docs/Web/CSS/General_sibling_selectors

Die ~ Kombinator trennt zwei Selektoren und entspricht das zweite Element nur, wenn es durch die ersten vorangestellt ist, und beide einen gemeinsamen Elternteil.

+0

Aber don‘ t Ich habe genau diese Situation? Mit beiden Geschwistern innerhalb des gleichen Wrappers (gemeinsames Elternteil) und - obwohl ich nicht genau weiß, was "vorangegangen" bedeutet - folgt das zweite Element direkt nach dem ersten. Oder bekomme ich da etwas falsch? Vielen Dank! – Daiaiai

+0

@Daiaiai legte 'sw_2-emotionen' vor' sw_2-technik' und du wirst sehen. –

+0

@ uom-pgregorio Aber ich dachte, "+" wurde speziell für diese Situationen verwendet, um ein Element direkt nach diesem zu zielen? Warum sollte ich dann überhaupt "~" verwenden? Also lautet die klare Antwort: Die Situation, die ich habe, ist ohne JS nicht machbar? – Daiaiai