Mike ve Robertc'e yardımcı gönderileri için teşekkür ederiz!
HTML'nizde iki öğe varsa ve :hover
bir tanesinin üzerinde ve diğerinde bir stil değişikliğini hedeflemek istiyorsanız , iki öğenin doğrudan ilişkili olması gerekir - ebeveynler, çocuklar veya kardeşler. Bu, iki öğenin ya birbirinin içinde olması ya da her ikisinin de aynı daha büyük öğenin içinde olması gerektiği anlamına gelir.
Kullanıcıları sitemde ve :hover
vurgulanan terimler üzerinden okurken, tarayıcının sağ tarafındaki bir kutuda tanımları görüntülemek istedim ; bu nedenle, 'tanım' öğesinin 'metin' öğesinin içinde görüntülenmesini istemedim.
Neredeyse vazgeçtim ve sadece sayfama javascript ekledim, ama bu gelecekteki dang! İstediğimiz etkileri elde etmek için elementlerimizi nereye yerleştirmemiz gerektiğini söyleyen CSS ve HTML'den geri sass koymak zorunda kalmamalıyız! Sonunda uzlaştık.
Dosyadaki gerçek HTML öğelerinin :hover
birbiri için geçerli hedefler olması için iç içe yerleştirilmesi veya tek bir öğede yer alması gerekirken , css position
özniteliği istediğiniz herhangi bir öğeyi görüntülemek için kullanılabilir. Pozisyon kullandım: :hover
eylemimin hedefini , HTML belgesindeki konumundan bağımsız olarak kullanıcının ekranında istediğim yere yerleştirmek için düzeltildi .
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;
}
Bu örnekte, :hover
içindeki bir öğeden gelen komutun hedefi #explainBox
ya içinde #explainBox
ya da içinde olmalıdır #explainBox
. #Definitions'a atanan konum öznitelikleri #explainBox
, teknik olarak HTML belgesi içinde istenmeyen bir konumda olmasına rağmen , istenen konumda (dışarıda ) görünmeye zorlar .
#id
Birden fazla HTML öğesi için aynı kullanmanın kötü form olarak kabul edildiğini anlıyorum ; bununla birlikte, bu durumda, örnekleri #light
benzersiz #id
elemanlardaki ilgili konumlarından dolayı bağımsız olarak tarif edilebilir . id
#light
Bu durumda tekrar etmemek için herhangi bir neden var mı ?
~
'Küp