Nah, pertanyaan ini ditanyakan berkali-kali sebelumnya, dan jawaban singkatnya adalah: Tidak dapat dilakukan dengan CSS murni. Ada dalam namanya: Cascading Style Sheets hanya mendukung gaya dalam arah cascading, bukan ke atas.
Tetapi dalam kebanyakan situasi di mana efek ini diinginkan, seperti dalam contoh yang diberikan, masih ada kemungkinan untuk menggunakan karakteristik kaskade ini untuk mencapai efek yang diinginkan. Pertimbangkan markup pseudo ini:
<parent>
<sibling></sibling>
<child></child>
</parent>
Triknya adalah memberi saudara kandung ukuran dan posisi yang sama seperti orang tua dan untuk gaya saudara kandung bukan orang tua. Ini akan terlihat seperti orang tua ditata!
Sekarang, bagaimana gaya saudara kandungnya?
Ketika anak itu melayang, orang tuanya juga, tetapi saudara kandungnya tidak. Hal yang sama berlaku untuk saudara kandung. Ini menyimpulkan dalam tiga jalur pemilih CSS yang mungkin untuk menata saudara:
parent sibling { }
parent sibling:hover { }
parent:hover sibling { }
Jalur yang berbeda ini memungkinkan beberapa kemungkinan bagus. Misalnya, melepaskan trik ini pada contoh dalam hasil pertanyaan dalam biola ini :
div {position: relative}
div:hover {background: salmon}
div p:hover {background: white}
div p {padding-bottom: 26px}
div button {position: absolute; bottom: 0}

Jelas, dalam banyak kasus, trik ini tergantung pada penggunaan posisi absolut untuk memberi saudara kandung ukuran yang sama seperti orang tua, dan masih membiarkan anak muncul di dalam orang tua.
Kadang-kadang perlu untuk menggunakan jalur pemilih yang lebih berkualitas untuk memilih elemen tertentu, seperti yang ditunjukkan dalam biola ini yang mengimplementasikan trik beberapa kali dalam menu pohon. Cukup bagus kok.