Nun, diese Frage wird schon oft gestellt, und die kurze typische Antwort lautet: Sie kann nicht mit reinem CSS durchgeführt werden. Es ist im Namen: Cascading Style Sheets unterstützt das Styling nur in kaskadierender Richtung, nicht nach oben.
Aber in den meisten Fällen , in denen dieser Effekt gewünscht wird, wie in dem gegebenen Beispiel, gibt es immer noch die Möglichkeit , diese Kaskadierung Eigenschaften zu verwenden , um den gewünschten Effekt zu erreichen. Betrachten Sie dieses Pseudo-Markup:
<parent>
<sibling></sibling>
<child></child>
</parent>
Der Trick besteht darin, dem Geschwister die gleiche Größe und Position wie dem Elternteil zu geben und das Geschwister anstelle des Elternteils zu stylen. Dies wird so aussehen, als ob die Eltern gestylt sind!
Wie soll man das Geschwister stylen?
Wenn das Kind schwebt, ist es auch der Elternteil, das Geschwister jedoch nicht. Gleiches gilt für die Geschwister. Dies schließt in drei möglichen CSS-Auswahlpfaden für das Styling des Geschwisters:
parent sibling { }
parent sibling:hover { }
parent:hover sibling { }
Diese verschiedenen Wege bieten einige schöne Möglichkeiten. Wenn Sie beispielsweise diesen Trick auf das Beispiel in der Frage loslassen, führt dies zu folgender Geige :
div {position: relative}
div:hover {background: salmon}
div p:hover {background: white}
div p {padding-bottom: 26px}
div button {position: absolute; bottom: 0}
In den meisten Fällen hängt dieser Trick natürlich von der Verwendung der absoluten Positionierung ab, um dem Geschwister die gleiche Größe wie dem Elternteil zu geben und das Kind dennoch im Elternteil erscheinen zu lassen.
Manchmal ist es erforderlich, einen qualifizierteren Auswahlpfad zu verwenden, um ein bestimmtes Element auszuwählen, wie in dieser Geige gezeigt, die den Trick mehrmals in einem Baummenü implementiert. Wirklich ganz nett.