我想知道如何在任何给定时间获取对任何最接近document.body.scrollTop
的DOM节点的引用。
假设我在div
中有10个段落,而{400}的scrollTop
在p
子5上。
我想存储该信息,并在用户返回时将其返回到该段落。当然我可以简单地将scrollTop重置为给定值,但是如果调整浏览器大小或改变方向,这不是一个可靠的方法(媒体查询可能会改变元素的大小)。
但是,如果我可以将节点的值存储在顶部,我可以使用.scrollIntoView()
并确保用户位于正确的位置。
有什么想法吗?
谢谢。
答案 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