我想要获取一个元素相对于浏览器的视区(显示页面的视区,而不是整个页面)的位置。在JavaScript中如何做到这一点呢?
非常感谢
发布于 2016-07-22 06:18:37
在我的例子中,为了安全起见,我在方程式中添加了window.scroll:
var element = document.getElementById('myElement');
var topPos = element.getBoundingClientRect().top + window.scrollY;
var leftPos = element.getBoundingClientRect().left + window.scrollX;
这使我能够获得元素在文档上的实际相对位置,即使它已经被滚动。
发布于 2018-07-11 18:52:11
var element = document.querySelector('selector');
var bodyRect = document.body.getBoundingClientRect(),
elemRect = element.getBoundingClientRect(),
offset = elemRect.top - bodyRect.top;
发布于 2018-02-13 00:05:55
jQuery很好地实现了这一点。如果你查看jQuery的offset
的源代码,你会发现它基本上是如何实现的:
var rect = elem.getBoundingClientRect();
var win = elem.ownerDocument.defaultView;
return {
top: rect.top + win.pageYOffset,
left: rect.left + win.pageXOffset
};
https://stackoverflow.com/questions/1350581
复制相似问题