本文介绍在JavaScript中获取鼠标坐标的两种常见场景:相对于浏览器视口(Body)和相对于特定DOM元素。通过结合event.clientX/Y与元素的offsetLeft/Top及页面滚动高度,可精确计算鼠标在任意元素内的相对位置。
// 计算相对于目标对象的纵坐标:鼠标相对页面的纵坐标 - 对象相对页面的纵坐标 + 页面滚动高度
获取相对于Body的鼠标坐标
代码如下:
var x, y;
// 当需要获取相对于页面主体(Body)的坐标值时,使用以下方法:
function positionBody(event) {
event = event || window.event;
// 获取相对于Body定位的横坐标值
x = event.clientX;
// 获取相对于Body定位的纵坐标值
y = event.clientY;
}
获取相对于特定DOM元素的鼠标坐标// 当需要获取相对于特定对象(Element)的坐标值时,使用以下方法:
function positionObj(event, id) {
// 获取指定ID对象相对于页面左上角的横坐标
var thisX = document.getElementById(id).offsetLeft;
// 获取指定ID对象相对于页面左上角的纵坐标
var thisY = document.getElementById(id).offsetTop;
// 获取页面滚动的垂直距离
// 注意:document.documentElement.scrollTop 适用于非WebKit内核浏览器;
// document.body.scrollTop 适用于WebKit内核(如Chrome)浏览器
var thisScrollTop = document.documentElement.scrollTop + document.body.scrollTop;
event = event || window.event;
// 计算相对于目标对象的横坐标:鼠标相对页面的横坐标 - 对象相对页面的横坐标
x = event.clientX - thisX;
}