【问题标题】:Mouse coordinates relative to currentTarget in React in event handler事件处理程序中 React 中相对于 currentTarget 的鼠标坐标
【发布时间】:2018-01-22 19:44:54
【问题描述】:

我有一个外部 div 可以捕获 onWheel 鼠标事件。在处理程序中,我想知道鼠标指针坐标相对于外部 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>
  )
}

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

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

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:

    我找到了一个可行的解决方案,如果它对某人有帮助,我会在此处发布。我不确定它是否是最好的,所以我会很感激一些 cmets(以及可能更好的解决方案)。

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

    【讨论】:

    • 太棒了,就像一个魅力,正在研究如何使用 getBoundingClientRect 从偶数这里是:)
    • 很好的解决方案。就我而言,我还需要考虑页面滚动位置。对于这艘船上的其他人:event_offsetY = event.pageY - window.pageYOffset - currentTargetRect.top.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多