【问题标题】:Fire react "onMouseMove" event when css "pointer-events-none" is set设置css“pointer-events-none”时触发“onMouseMove”事件
【发布时间】:2020-10-17 13:40:59
【问题描述】:

我有一个带有absolute 定位div 的React 组件,它覆盖了我的应用程序中的其他内容。 div 用于触发 react 的 onMouseMove 事件。

我想设置css值pointer-events-none,这样div下面的所有组件仍然可以点击,有指针事件等。无论pointer-events-none何时出现,onMouseMove事件都不会再触发。一切都应该表现得像覆盖 div 不存在,它应该只是触发 onMouseMove

代码结构如下:

<button>I should be clickable</button>
<div>
  <div
    style={{
      opacity: 0,
      position: `absolute`,
      top: `50px`,
      left: `50px`,
      width: `30vw`,
      height: `30vh`,
      pointerEvents: `none`,
    }}
    onMouseMove={() => {
      console.log(`Fire!`)
    }}
  >
    Overlay
  </div>
  <button>I should be clickable</button>
  <a>I should be clickabel</a>
</div>
<button>I should be clickable</button>

我认为我在这里遗漏了一些东西或选择了完全错误的路径。 非常感谢您的帮助!

【问题讨论】:

  • 错误的逻辑恕我直言。如果您想要鼠标事件,请删除指针事件无...尝试使用 z-index
  • 更改 z-index 并不能解决问题。要么“onMouseMove”没有触发,要么下面的内容不再可点击。

标签: javascript css reactjs jsx


【解决方案1】:

您需要将覆盖的 div 放在根目录(在这种情况下事件会传播),删除 pointerEvents 规则和不透明度,以便 div 内的内容可见:

<div
  style={{
    position: `absolute`,
    top: `50px`,
    left: `50px`,
    width: `30vw`,
    height: `30vh`
  }}
  onMouseMove={() => {
    console.log(`Fire!`)
  }}
>
  <button>I should be clickable</button>
  <button>I should be clickable</button>
  <a>I should be clickable</a>
  <button>I should be clickable</button>
</div>

【讨论】:

  • 感谢您的回答!这适用于该组件中的内容。当组件放置在我的页面上的其他位置并覆盖另一个按钮时,该按钮将不再可点击。我认为我想要达到的目标是不可能的。
猜你喜欢
  • 2012-08-08
  • 2015-07-22
  • 1970-01-01
  • 2011-08-16
  • 2018-03-21
  • 2017-12-27
  • 1970-01-01
  • 2012-03-30
  • 1970-01-01
相关资源
最近更新 更多