我想使用CSS来实现当我悬停在div id='a'
上时显示div id='b'
,但是我无法解决这个问题,因为div 'a'
在另一个div
中而div 'b'
不在其中。
<div id='content'>
<div id='a'>
Hover me
</div>
</div>
<div id='b'>
Show me
</div>
我想使用CSS来实现当我悬停在div id='a'
上时显示div id='b'
,但是我无法解决这个问题,因为div 'a'
在另一个div
中而div 'b'
不在其中。
<div id='content'>
<div id='a'>
Hover me
</div>
</div>
<div id='b'>
Show me
</div>
我们只需在鼠标悬停时显示相同的标签div,像这样
<style>
#b {
display: none;
}
#content:hover~#b{
display: block;
}
</style>
#b2
什么时候会显示? - Shafizadeh#content
放在#b2
之前,或者使用JavaScript,或者使用DOM中较早或较高的元素的:hover
. - DACrosby使用以下代码确实是可能的
<div href="#" id='a'>
Hover me
</div>
<div id='b'>
Show me
</div>
和 CSS
#a {
display: block;
}
#a:hover + #b {
display:block;
}
#b {
display:none;
}
现在当鼠标悬停在元素#a上时,会显示出元素#b。
您可以使用axe选择器来实现这一点。
有两种方法:
<
axe 选择器#a:hover < #content + #b
这个axe样式规则将选择#content
的直接父元素#a
的直接兄弟元素#b
,该元素具有:hover
状态。
div {
display: inline-block;
margin: 30px;
font-weight: bold;
}
#content {
width: 160px;
height: 160px;
background-color: rgb(255, 0, 0);
}
#a, #b {
width: 100px;
height: 100px;
line-height: 100px;
text-align: center;
}
#a {
color: rgb(255, 0, 0);
background-color: rgb(255, 255, 0);
cursor: pointer;
}
#b {
display: none;
color: rgb(255, 255, 255);
background-color: rgb(0, 0, 255);
}
#a:hover < #content + #b {
display: inline-block;
}
<div id="content">
<div id="a">Hover me</div>
</div>
<div id="b">Show me</div>
<script src="https://rouninmedia.github.io/axe/axe.js"></script>
\
)#a:hover \ #b
这个axe样式规则将选择#b
,它存在于与具有:hover
状态的#a
相同的文档中。
div {
display: inline-block;
margin: 30px;
font-weight: bold;
}
#content {
width: 160px;
height: 160px;
background-color: rgb(255, 0, 0);
}
#a, #b {
width: 100px;
height: 100px;
line-height: 100px;
text-align: center;
}
#a {
color: rgb(255, 0, 0);
background-color: rgb(255, 255, 0);
cursor: pointer;
}
#b {
display: none;
color: rgb(255, 255, 255);
background-color: rgb(0, 0, 255);
}
#a:hover \ #b {
display: inline-block;
}
<div id="content">
<div id="a">Hover me</div>
</div>
<div id="b">Show me</div>
<script src="https://rouninmedia.github.io/axe/axe.js"></script>
#b
时显示元素,而不是仅在悬停于 #content
时。 - Sileo使用相邻兄弟组合器+
,它匹配紧接着的下一个兄弟节点。
然后可以使用类来实现多个独立的悬停效果:
<div class='a'>
Hover me 1
</div>
<div class='b'>
Show me 1
</div>
<div class='a'>
Hover me 2
</div>
<div class='b'>
Show me 2
</div>
.b {
display: none;
}
.a:hover + .b {
display: block;
}
如果有人正在使用position:absolute,您可能会遇到上述方法的问题。确保您也处理绝对元素的悬停。
<div class='content'>
Hover me 1
</div>
<div class='hover'>
Show me 1
</div>
.hover {
position: absolute;
visibility: hidden;
}
.content:hover + .hover {
visibility: visible !important;
}
.hover:hover {
visibility: visible !important;
}