2015-12-22 192 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