事件处理程序中 React 中相对于 currentTarget 的鼠标坐标

joh*_*odo 4 javascript reactjs

我有一个捕获onWheel鼠标事件的外部 div 。在处理程序中,我想知道相对于外部 div的鼠标指针坐标。例如:

constructor() {
  this.handleWheel = this.handleWheel.bind(this);
}

handleWheel(event) {
  // how do I get mouse position relative to the outer div here?
}

render() {
  return (
    <div onWheel={this.handleWheel}>
      ...
      <img src="..." />
      ...
    </div>
  )
}
Run Code Online (Sandbox Code Playgroud)

当我将鼠标指针移到图像上并滚动鼠标滚轮时,event.target设置为<img>并且event.currentTarget设置为<div>。我还可以获得相对于event.target( event.nativeEvent.offsetX/Y)的鼠标位置,但这对我没有帮助,因为我不知道<img>相对于<div>.

换句话说,我被卡住了......我如何获得相对于附加了处理程序的元素的鼠标位置?

joh*_*odo 13

我找到了一个有效的解决方案,如果对某人有帮助,我将其张贴在这里。我不确定它是否是最好的,所以我会很感激一些评论(以及可能更好的解决方案)。

handleWheel(event) {
  let currentTargetRect = event.currentTarget.getBoundingClientRect();
  const event_offsetX = event.pageX - currentTargetRect.left,
        event_offsetY = event.pageY - currentTargetRect.top;
  //...
}
Run Code Online (Sandbox Code Playgroud)

  • 好的解决方案。就我而言,我还需要考虑页面滚动位置。对于这条船上的其他人:`event_offsetY = event.pageY - window.pageYOffset - currentTargetRect.top`。 (4认同)