我有当另一个DIV悬停应用样式到一个div的问题。 这里是我的情况:
<div id="nav">
<div class="logged"></div>
<div class="nav_child"></div>
</div>
.logged:hover .nav_child {
display: initial;
}
#nav .nav_child {
display: none;
}
但是,这是行不通的。 我也试过.logged:hover > .nav_child
和.logged:hover + .nav_child
,仍然一无所获。 它仅适用于#nav:hover .nav_child
但我需要表现出来时.logged
悬停,而不是在#nav
盘旋。
有任何想法吗?
刚刚与相邻的兄弟组合子解决。 我声明并称之为“记录”为ID,并添加.logged之间+:hover和.nav_child它的工作原理。
参考:相邻的兄弟组合子: http://css-tricks.com/child-and-sibling-selectors
旧代码: http://jsfiddle.net/8rdh7m2j/
工作代码:
<div id="nav">
<div class="logged" id="logged">Hello</div>
<div class="nav_child">Puff</div>
</div>
#logged:hover + .nav_child {
display: initial;
}
#nav .nav_child {
display: none;
}
演示: http://jsfiddle.net/hwh3o8u0/1/
即使只是删除从孩子和#nav +
.logged:hover+.nav_child {
display:initial;
}
.nav_child {
display: none;
}
http://jsfiddle.net/dz22m10y/
你是正确的轨道上.logged:hover + .nav_child
方法。 它不工作的原因是, #nav .nav_child
具有更高的特异性(因为它包括一个ID),所以优先前述统治。
是的,你可以解决移动到一个ID为logged
,只要在你的自我的答案一样,但不是这样做,你可以通过在你已经到了那里太ID添加提高徘徊规则的特殊性:
#nav .logged:hover + nav_child {
顺便说一句,这样的问题几乎总是可以使用浏览器的开发板的样式检查追查。 在这种情况下,你会看到两个规则,你会看到第二个是压倒一切的首位。 这很容易导致你的结论是,这是一个专一的问题。 最具风格督察会给你“模仿”悬置状态的能力。
有关特异性的更多信息,请参阅https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity 。 在你的情况,你原来的第一条规则有20(两班)的特异性,而第二个101(一个ID和一个类)。
Here is a good resource that covers this topic http://jsfiddle.net/ThinkingStiff/a3y52/
<div id="nav">
<div id="one" class="logged"></div>
<div id="two" class="nav_child"></div>
</div>
#one:hover ~ two,
{
background-color: black;
color: white;
}