抓取对最接近scrollTop的元素的引用

时间:2014-01-03 22:30:46

标签: javascript

我想知道如何在任何给定时间获取对任何最接近document.body.scrollTop的DOM节点的引用。

假设我在div中有10个段落,而{400}的scrollTopp子5上。

我想存储该信息,并在用户返回时将其返回到该段落。当然我可以简单地将scrollTop重置为给定值,但是如果调整浏览器大小或改变方向,这不是一个可靠的方法(媒体查询可能会改变元素的大小)。

但是,如果我可以将节点的值存储在顶部,我可以使用.scrollIntoView()并确保用户位于正确的位置。

有什么想法吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

如果你知道文档结构就够了。继续你的例子:

// div is the parent <div> element
var el, top, min = Number.MAX_VALUE, els = div.getElementByTagName('p');
for (var i=0; i<els.length; i++) {
    top = Math.abs(els[i].getBoundingClientRect().top);
    if (top < min) {
        min = top;
        el = els[i];
    }
}

// el now holds the <p> whose top is closest to the top of the window