<分区>
我想在 Javascript 中获取对象在页面上的绝对 x,y 位置。我该怎么做?
我尝试了 obj.offsetTop
和 obj.offsetLeft
,但它们只给出了相对于父元素的位置。我想我可以遍历并添加父项的偏移量及其父项的偏移量,等等,直到我到达没有父项的对象,但似乎应该有更好的方法。谷歌搜索并没有出现太多,甚至 SO 站点搜索也没有找到任何东西。
此外,我不会使用 jQuery。
标签 javascript dom offset
<分区>
我想在 Javascript 中获取对象在页面上的绝对 x,y 位置。我该怎么做?
我尝试了 obj.offsetTop
和 obj.offsetLeft
,但它们只给出了相对于父元素的位置。我想我可以遍历并添加父项的偏移量及其父项的偏移量,等等,直到我到达没有父项的对象,但似乎应该有更好的方法。谷歌搜索并没有出现太多,甚至 SO 站点搜索也没有找到任何东西。
此外,我不会使用 jQuery。
最佳答案
var cumulativeOffset = function(element) {
var top = 0, left = 0;
do {
top += element.offsetTop || 0;
left += element.offsetLeft || 0;
element = element.offsetParent;
} while(element);
return {
top: top,
left: left
};
};
(无耻地从 PrototypeJS 窃取方法;更改代码风格、变量名和返回值以保护无辜者)
关于javascript - 如何在 Javascript 中获取对象在页面上的绝对位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1480133/