2015-12-22 130 views
0

我试图获得前一个div偏移的顶偏了,我有当页面获取滚动是被运行下面的代码:获取项目从

var $elem = document.querySelector(selector); 
var elemTop = $elem.offsetTop; 
console.log(elemTop); 

但是,当我把它的滚动总是将0打印到控制台,即使该元素低于折叠。

+0

该元素是否具有offsetParent? Docs说:'HTMLElement.offsetTop只读属性返回当前元素相对于offsetParent节点顶部的距离。' –

+0

看起来像它,'$ elem.offsetParent',当我滚动时我得到一个html元素在控制台。 –

+0

好吧,那么如何获得文档根目录的偏移量? –

回答

2
var elmTop = $elem.getBoundingClientRect().top + window.scrollY; 

element.getBoundingClientRect()给出了视口内的位置,和window.scrollY给出到文档的顶端从视口的顶部的距离。

+0

这看起来像是在工作! –

+0

另一种方法是使用element.offsetParent遍历DOM,将每个节点的offsetTop添加到一起以获取测量结果。这是比较复杂的,但可能比计算getBoundingClientRect的值更有效率,在执行Scroll上的任何操作时需要注意。 – Jack