首页  >  文章  >  web前端  >  将鼠标悬停在子元素上时如何暂停父元素悬停效果?

将鼠标悬停在子元素上时如何暂停父元素悬停效果?

Linda Hamilton
Linda Hamilton原创
2024-11-02 17:50:29906浏览

How to Suspend Parent Hover Effects When Hovering Over a Child Element?

悬停在子元素上并暂停父元素悬停效果

当嵌套

时元素共存时,将鼠标悬停在子元素上可能会干扰应用于父元素的悬停效果。相反,您可能希望在将鼠标悬停在子元素上时停用父元素上的悬停效果。

CSS 解决方案

在不使用 JavaScript 的情况下实现此行为需要巧妙的解决方法使用兄弟元素。

<code class="css">.parent {
  width: 100px;
  height: 100px;
  padding: 50px;
  background: lightgray;
}

.parent:hover {
  background: lightblue;
}

.child {
  height: 100px;
  width: 100px;
  background: darkgray;
}

.child:hover {
  background: lightblue;
}

.sibling {
  position: relative;
  width: 100px;
  height: 100px;
  padding: 50px;
  top: -50px;
  left: -50px;
  background: #3D6AA2;
  transition: background-color 1s;
}

.sibling:hover {
  background: #FFF;
}</code>
<code class="html"><div class="parent">
    <div class="sibling"></div>
    <div class="child"></div>
</div></code>

兄弟元素技巧

兄弟元素绝对定位在父元素内,并与父元素和子元素重叠元素。它超出了父元素的范围,可以有效捕获所有不专门针对子元素的悬停事件。

当兄弟元素悬停时,其背景颜色变为白色,从而在视觉上消除父元素的悬停效果。当子元素悬停时,其自身的悬停效果仍然存在,但白色同级元素隐藏了父元素的悬停效果。

近期进展

请注意 :has( ) 选择器现在存在,可以根据特定后代的存在直接定位父元素。这种方法可以用来更优雅地实现所需的行为。

<code class="css">.parent:has(.child:hover) {
  background: lightgray !important;
}</code>

以上是将鼠标悬停在子元素上时如何暂停父元素悬停效果?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn