使用Javascript(Cross-Browser)获取DOM元素相对于页面顶部的位置

时间:2018-08-04 13:26:59

标签: javascript dom position

在尝试确定DOM元素相对于页面顶部(无论在视口内还是视口外)的位置时遇到问题。

现在,在 Firefox 中,这非常简单,只需执行以下操作:

jQuery(element).offset().top

但是,在 Chrome 中,该表达式返回元素相对于视口的位置,当我上下滚动页面时,该位置会改变。在这种情况下,我可以改为通过以下方式计算所需的值:

jQuery(element).offset().top + document.body.scrollTop

当然,困难在于,不同版本的Chrome可能处理不同的问题,更不用说我什至无法测试的其他浏览器了!是否有跨浏览器的简单解决方案来找到该值?似乎很容易做。

修改

正如有人有用地指出的那样,“这应该是相同的,这就是jQuery的重点。”我在其他网站上进行了测试,事实就是如此。不知何故,我的网站由于某种原因被抛弃了。可能是什么原因的任何线索?

1 个答案:

答案 0 :(得分:1)

找到了!事实证明,有一个奇怪的CSS规则可以达到这种效果:

html, body {
    overflow-y: scroll;
}

那是在一个滚动窗口(但是以某种方式隐藏在视图中)内创建一个滚动窗口,这意味着,即使我向下滚动通过内部的“主体”窗口,我的视口实际上并没有移动。当意识到window.pageYOffset始终返回0时,我意识到了这一点。