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