:hover我有两个父容器,当悬停在类中的三个元素中的任何一个上时cl1,我想了解伪类是否可以工作cl3。
例如,将鼠标悬停在<div class="cl2">Hover1</div>并应显示<div class="cl4">I'm hidden2</div>.
这就是我所做的,当然它不起作用。
.cl4 {
display: none;
}
.cl1 ~ .cl2:hover ~ .cl3 ~ .cl4 {
display: block;
}
<body>
<div class="container">
<div class="cl1">
<div class="cl2">Hover1</div>
<div class="cl2">Hover2</div>
<div class="cl2">Hover3</div>
</div>
<div class="cl3">
<div class="cl4">I'm hidden1</div>
<div class="cl4">I'm hidden2</div>
<div class="cl4">I'm hidden3</div>
</div>
</div>
</body>
在这种情况下,
css这是无法做到的。或者,使用:target伪类
回答
不,当将鼠标悬停在嵌套元素 (cl2) 上时,您将无法访问外部元素。CSS 影响从上到下传播,不能倒退(不能通过子元素引用父元素)。
如果需要向上导航 DOM 树,则需要 JS。(在示例中显示了一个带有 Jquery 和最近的变体 -> 查找)
该符号
~允许您引用相邻元素。在您的特定示例中,您可以将鼠标悬停在父元素 cl1 上并使用它来访问相邻元素。
您可以一次在 :hover 上挂多个规则并同时显示 cl3 及其嵌套元素。(如示例所示)。
查看示例: