Terima kasih banyak kepada Mike dan Robertc untuk posting bermanfaat mereka!
Jika Anda memiliki dua elemen dalam HTML Anda dan Anda ingin :hover
lebih dari satu dan menargetkan perubahan gaya di yang lain, dua elemen harus terkait langsung - orang tua, anak-anak atau saudara kandung. Ini berarti bahwa kedua elemen harus satu di dalam yang lain atau keduanya harus terkandung dalam elemen yang lebih besar yang sama.
Saya ingin menampilkan definisi dalam kotak di sisi kanan browser ketika pengguna saya membaca situs saya dan :hover
lebih dari istilah yang disorot; oleh karena itu, saya tidak ingin elemen 'definisi' ditampilkan di dalam elemen 'teks'.
Saya hampir menyerah dan baru saja menambahkan javascript ke halaman saya, tetapi ini adalah masa depan! Kita tidak harus memasang back sass dari CSS dan HTML memberitahu kita di mana kita harus meletakkan elemen kita untuk mencapai efek yang kita inginkan! Pada akhirnya kami berkompromi.
Sementara elemen HTML aktual dalam file harus bersarang atau terkandung dalam satu elemen untuk menjadi :hover
target yang valid satu sama lain, position
atribut css dapat digunakan untuk menampilkan elemen apa pun di mana pun Anda inginkan. Saya menggunakan posisi: tetap untuk menempatkan target :hover
tindakan saya di tempat yang saya inginkan di layar pengguna terlepas dari lokasinya di dokumen HTML.
Html:
<div id="explainBox" class="explainBox"> /*Common parent*/
<a class="defP" id="light" href="http://en.wikipedia.or/wiki/Light">Light /*highlighted term in text*/
</a> is as ubiquitous as it is mysterious. /*plain text*/
<div id="definitions"> /*Container for :hover-displayed definitions*/
<p class="def" id="light"> /*example definition entry*/ Light:
<br/>Short Answer: The type of energy you see
</p>
</div>
</div>
Css:
/*read: "when user hovers over #light somewhere inside #explainBox
set display to inline-block for #light directly inside of #definitions.*/
#explainBox #light:hover~#definitions>#light {
display: inline-block;
}
.def {
display: none;
}
#definitions {
background-color: black;
position: fixed;
/*position attribute*/
top: 5em;
/*position attribute*/
right: 2em;
/*position attribute*/
width: 20em;
height: 30em;
border: 1px solid orange;
border-radius: 12px;
padding: 10px;
}
Dalam contoh ini target :hover
perintah dari elemen di dalam #explainBox
harus #explainBox
atau juga di dalam #explainBox
. Atribut posisi yang ditetapkan untuk #definisi memaksanya muncul di lokasi yang diinginkan (di luar #explainBox
) meskipun secara teknis terletak di posisi yang tidak diinginkan dalam dokumen HTML.
Saya mengerti itu dianggap bentuk buruk untuk menggunakan yang sama #id
untuk lebih dari satu elemen HTML; akan tetapi, dalam hal ini contoh-contoh #light
dapat dijelaskan secara independen karena posisi masing-masing dalam #id
elemen unik . Apakah ada alasan untuk tidak mengulangi id
#light
kasus ini?
~
untuk 'cube adalah suatu tempat setelah wadah di DOM dan berbagi orang tua'