【问题标题】:Prevent hover on absolutely positioned child to propagate to parent防止悬停在绝对定位的孩子上传播给父母
【发布时间】:2019-10-29 15:36:16
【问题描述】:

我在具有悬停状态的父级上方有一个绝对定位的菜单。

我正在寻找一种方法,以便将鼠标悬停在菜单上不会触发父级的悬停状态。

.row {
  height: 52px;
  background: #F4F3D9;
  width: 100%;
  position: relative;
}

.row:hover {
  background: black; 
}


.menu {
  height: 100px;
  width: 100px;
  background-color: green;
  position: absolute;
  z-index: 500;
}
<div class="container">
  <div class="row">
     <div class="menu">
       Hovering me should not make the row black
     </div>
  </div>
</div>

谢谢!

【问题讨论】:

  • pointer-events:none 的绝对元素?

标签: css hover absolute


【解决方案1】:

您可以使用一些 Javascript 来告诉 .menu 上的 mouseover 事件不要在其父级上传播。这是一个例子:

document
  .querySelector('.menu')
  .addEventListener('mouseover', e => { e.stopPropagation() })
.row {
  height: 52px;
  background: #F4F3D9;
  width: 100%;
  position: relative;
}

.row:hover {
  background: black;
}

.menu {
  height: 100px;
  width: 100px;
  background-color: green;
  position: absolute;
  z-index: 500;
}
<div class="container">
  <div class="row">
    <div class="menu">
      Hovering me should not make the row black
    </div>
  </div>
</div>

【讨论】:

  • 谢谢。如果存在,我正在寻找一个纯 css 解决方案。另外,您不小心将 css 更改为 menu:hover 而不是 row:hover。
  • 没有纯 css 解决方案。子 el 在父 el 中,这意味着你不能触摸子 el 而不触摸父元素。如果您不想使用 .js,则必须重新排列 html。
猜你喜欢
  • 1970-01-01
  • 2012-08-24
  • 2014-08-27
  • 1970-01-01
  • 2022-12-26
  • 2010-11-01
  • 1970-01-01
  • 2022-01-12
  • 2019-08-12
相关资源
最近更新 更多