使用jQuery.offset()函数,可以得到浏览器页面左上角的坐标:
var offset = $("selector").offset();
结合 Javascript window.screenX and window.screenY 窗口属性,您可以将元素的位置计算为与屏幕顶部/左侧的偏移量:
var screenY = offset.top + window.screenX;
var screenX = offset.left + window.screenY;
请注意,window.screenX 和 window.screenY 在大多数 浏览器中是标准的,但 IE 版本 8 及之前的版本使用 window.screenTop 和 window.screenLeft 代替。如果您需要兼容 IE8 或更早版本,请务必考虑到这一点。
另请注意,您可能需要考虑当前滚动位置,在这种情况下,您将使用 jQuery .scrollTop() 和 .scrollLeft() 方法并从偏移值中减去。
不幸的是,这不会考虑窗口边框或工具栏。为此,您可以捕获鼠标移动并存储鼠标位置,该位置以实际屏幕坐标给出。
这个解决方案的核心如下,它安装了一个一次性鼠标处理程序来确定页面的实际屏幕坐标:
var pageX;
var pageY;
window.onmousemove = setMouseCoordinates;
function setMouseCoordinates (e) {
window.onmousemove = null;
pageX = e.screenX - e.clientX;
pageY = e.screenY - e.clientY;
}
然后,您可以使用这些存储的值来计算任何 Javascript 元素的偏移量:
x = pageX + elem.offsetLeft;
y = pageY + elem.offsetTop;
或 jQuery 元素:
x = pageX + elem.position().left;
y = pageY + elem.position().top;
查看小提琴以查看它的实际效果:https://jsfiddle.net/mgaskill/bpqzct3f/