当我将鼠标悬停在另一个div上时,我想让它显示为div而不是当我有多个div时。我不知道为什么?
Here a simple code of what is happening
码
<style>
.hover_show:hover{
display:block !important;
}
.show{
width:100% !important;
height: 20px !important;
}
.hover_show{
display:none !important;
}
.show:hover + .hover_show{
display: block !important;
}
</style>
<div class='show'>div2</div>
<div class='show'>div1</div>
<div class='hover_show'>
Content to show
</div>
在这个片段中,当我将鼠标悬停在div2上时,我想显示div内容。
答案 0 :(得分:0)
+
is the adjacent sibling combinator,但在您的示例中.hover_show
与您的div2
元素相邻。你想要~
: the general sibling combinator:
.hover_show { display: none; }
.hover_show:hover { display: block; }
.show {
width:100%;
height: 20px;
}
.show:hover ~ .hover_show { display: block; }
&#13;
<div class='show'>div2</div>
<div class='show'>div1</div>
<div class='hover_show'>
Content to show
</div>
&#13;
答案 1 :(得分:0)
你应该使用general sibling combinator(~
)并以这种方式重写你的最后一个选择器:
.show:hover ~ .hover_show {
...
}
实际上.show:hover + .hover_show
仅在两个元素相邻时(即,.show
元素悬停后紧跟一个.hover_show
元素)才有效。
如果您在这两者之间有其他元素,那么这不起作用。在您的示例中,如果您悬停第一个元素,则规则将无法应用,因为您在中间有另一个.show
元素
一般的兄弟组合代替所有跟随兄弟,而不管它们是否相邻。
答案 2 :(得分:0)
试试这个。希望如此解决您的问题
.show:hover ~ .hover_show{
display: block !important;
}