当前位置: 首页 > 面试题库 >

防止伪元素触发悬停?

司马振国
2023-03-14
问题内容

如果我有标记:

<div class="a b"></div>

.a类具有与之关联的悬停类

.b类具有与之关联的伪元素…像这样:

div
{
    width: 100px;
    height: 100px;
}
.a { background: red; display: inline-block; }
.a:hover { background: green; }

.b:after
{
    content: '';
    display: inline-block;
    width: 100px;
    height: 100px;
    margin-left: 100px;
    background: pink;
}

CSS是否有可能防止伪元素触发.a类悬停?

小提琴


问题答案:

以下CSS为现代浏览器(而非IE10-)提供了诀窍:

.b:after {
  pointer-events: none;
}

pointer-events: none 允许元素不接收悬停/点击事件。

警告

pointer- events对非SVG元素的支持处于相对早期的状态。developer.mozilla.org给您以下警告:

在CSS中将指针事件用于非SVG元素是实验性的。 该功能曾经是CSS3 UI草案规范的一部分,但由于存在许多未解决的问题,因此已推迟到CSS4。

Chrome对Box模式的解释display: inline- block导致上述小提琴闪烁。
如果display: block改用,您将获得对方框的正确解释。
Firefox没有这个问题。
为了确保一致的盒模型解释,请使用以下命令:


.b:after {
  pointer-events: none;
  display: block;
}

在Chrome中查看此小提琴以查看闪烁效果。



 类似资料:
  • 问题内容: 当我将鼠标悬停在DIV上时,它将触发将鼠标悬停在父DIV上,这对我来说似乎是错误的。我只希望“突出显示”效果在子DIV 上起作用。 问题答案: 根据定义,将鼠标悬停在孩子上,也将鼠标悬停在父母上。html事件中没有“阻止”。 有两个方法链,气泡和捕获。 W3C事件模型中发生的任何事件都首先被捕获,直到到达目标元素,然后再次冒泡。 http://www.quirksmode.org/js

  • 问题内容: 我有一个这样的设置: 这对于CSS: 有没有办法让伪元素的悬浮效果,例如,是它也可能得到伪元素悬停在回答另一个元素被那幅像这样:?CSS只会很好,但jQuery也可以。 问题答案: 您可以根据父对象的悬停更改伪元素:

  • 如果孩子在焦点中(已被点击),我怎么能失去父母的悬停状态?我有一个菜单箭头(用OPEN代替了它,以减少代码),它在悬停状态下打开我的菜单和菜单项,当我单击它们时,菜单项就会聚焦。在菜单项点击后,我希望能够失去对我父母的关注,这样菜单就会消失。 如果可能的话,我会尽量避免使用javascript,这是我最好的尝试... 这是我的html null null 编辑 我在一个单页应用程序上使用Angul

  • 我想要下面这样的基本代码: 但是,如果这两个事件都被悬停,我希望它不要同时触发这两个事件;例如,如果我悬停在“this”上,它应该只触发它的事件并警告“hello”。我怎么能这么做? 提前谢谢!

  • 问题内容: 我有一个:before开头的’quote’和一个:after结束的报价。 现在,我想要的是一个:after:after供“引用”参考,但我无法使其正常工作。 有人知道这是否可能吗? 到目前为止,我的代码: 问题答案: 已经提出了嵌套和伪元素的想法;请参阅“生成和替换的内容”模块的这一部分。但是,该模块已被放弃,等待完全重写,因此在重新发布该文档之前,我不会屏息。即便如此,嵌套内容伪元素

  • 主要内容:1. ::after,2. ::before,3. ::first-letter,4. ::first-line,5. ::selection,6. ::placeholder伪元素是一个附加在选择器末尾的关键词,通过伪元素您不需要借助元素的 ID 或 class 属性就可以对被选择元素的特定部分定义样式。例如通过伪元素您可以设置段落中第一个字母的样式,或者在元素之前、之后插入一些内容等等。 在 CSS1 和 CSS2 中,伪元素的使用与伪类相同,都是使一个冒号 与选择器相连。但在 C