我有3个这样的html div:
<div id="MainDiv">
<div id="nesteddiv1"></div>
<div id="nesteddiv2"></div>
</div>
我希望当我将鼠标悬停在MainDiv或nestedDiv1上时,我为MainDiv设置颜色1,为nesteddiv2设置颜色2,然后当我将鼠标悬停在nesteddiv2上时,我更改了nesteddiv2和MainDiv的背景颜色。
我更喜欢使用CSS,我知道javascript方式。
由于 马萨达克
答案 0 :(得分:2)
在CSS中,没有办法使用包含其后代之一的选择器来定位元素。所以虽然上半场很难实现,但下半场是不可能的。
如果重要的话,请使用JavaScript。
答案 1 :(得分:0)
对于给定的HTML,您可以使用以下CSS
#MainDiv:hover{
color:red;
}
#MainDiv div#nesteddiv1{
color:gray;
}
#MainDiv div#nesteddiv1:hover{
color:blue;
}
#MainDiv div#nesteddiv2{
color:yellow;
}
#MainDiv div#nesteddiv2:hover{
color:green;
}
注意:这在IE中不起作用,因为它支持仅在标记上悬停。
答案 2 :(得分:0)
无法从另一个元素中选择元素,这是不可能的。
但你可以用这样的jQuery做到这一点:
$(function() {
$("#div1").hover(function() {
$("#show-hide").toggleClass('highlight');
});
});
答案 3 :(得分:0)
使用CSS执行此操作的唯一方法是在悬停发生时使用额外的div来覆盖maindiv。它不适用于IE&lt; v9,因为它需要z-index
这将是标记
<div id="MainDiv">
<div id="nesteddiv1"></div>
<div id="nesteddiv2">
<div id="extradiv"><div>
</div>
</div>
CSS会非常棘手。
(免责声明:尚未经过测试 - 可能您需要更多规则)
z-index会让maindiv永远落后于其他人,而嵌套的div 1和2总是保持领先。 extradiv将在他们之间,'覆盖'maindiv,但只有当nesteddiv2被徘徊时。
这种方法的一个缺点是,在你停止悬停它之前,extradiv是可见的,而不仅仅是nesteddiv2。