有没有办法获取鼠标相对于其父元素的位置?
假设我有这样一个结构:
<div id="parent">
<span class="dot"></span>
</div>
当我将鼠标悬停在 span
元素上时,我需要获取它相对于其父元素 (<div id="parent">
) 的位置。PageX/ClientX 给出相对于页面/客户端区域的位置,所以对��没有用。
有没有办法获取鼠标相对于其父元素的位置?
假设我有这样一个结构:
<div id="parent">
<span class="dot"></span>
</div>
当我将鼠标悬停在 span
元素上时,我需要获取它相对于其父元素 (<div id="parent">
) 的位置。PageX/ClientX 给出相对于页面/客户端区域的位置,所以对��没有用。
通过使用getBoundingClientRect()
获取父元素相对于视口的位置,然后将其从事件中的clientX
和clientY
得到的鼠标位置上减去,即可获得相对位置。
例如:
element.addEventListener("mousedown", function (e) {
let bounds = parent.getBoundingClientRect();
let x = e.clientX - bounds.left;
let y = e.clientY - bounds.top;
console.log(x, y);
});
其中element
是接收事件的内部元素,而parent
是您所需的坐标参考。
jQuery offset() 方法处理父元素的定位,因此
function onsomemouseevent(e) {
var x = e.pageX - $(e.target).offset().left;
}
这是一个关于IT技术的问题,它涉及到jQuery和浏览器的抽象概念。
onMouseMove={(e) => {
var x = e.clientX - e.currentTarget.offsetLeft;
var y = e.clientY - e.currentTarget.offsetTop;
// Do something with x and y
}}
尝试使用 offsetParent
属性。
试试这个:
positionX = document.getElementById('childId').offsetParent.offsetLeft;
positionY = document.getElementById('childId').offsetParent.offsetLeft;