Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检索相对于元素的鼠标位置_Javascript_Mouseevent - Fatal编程技术网

Javascript 如何检索相对于元素的鼠标位置

Javascript 如何检索相对于元素的鼠标位置,javascript,mouseevent,Javascript,Mouseevent,我遇到一个问题,event.clientX-getBoundingClientRect.left返回一个负数。有人贴了一把小提琴,展示它是如何工作的 我稍微更新了一下,让它在这里重现我的问题: 将鼠标移到蓝色框上,我可以得到-1。有人能解释一下舍入误差的来源吗。如果只是为了避免负值,你可以在我当前的实现中添加Math.max(…,0),这正是我所做的,但感觉像是一个黑客。我想了解一个事件处理程序如何返回一个负的相对位置,该事件处理程序仅在绑定对象上方时触发。这就像说,你的鼠标离触发区只有0.91

我遇到一个问题,event.clientX-getBoundingClientRect.left返回一个负数。有人贴了一把小提琴,展示它是如何工作的

我稍微更新了一下,让它在这里重现我的问题:


将鼠标移到蓝色框上,我可以得到-1。有人能解释一下舍入误差的来源吗。

如果只是为了避免负值,你可以在我当前的实现中添加
Math.max(…,0)
,这正是我所做的,但感觉像是一个黑客。我想了解一个事件处理程序如何返回一个负的相对位置,该事件处理程序仅在绑定对象上方时触发。这就像说,你的鼠标离触发区只有0.91像素,但我把它发射出去了,你在触发区上的鼠标是-0.91像素。似乎不对。
function getPosition(e) {
  var rect = e.target.getBoundingClientRect();
  var x = Math.floor(e.clientX - rect.left);
  var y = Math.floor(e.clientY - rect.top);
  return {
    x,
    y
  }
}