我通过以下两种方式之一计算元素el的y位置:
var elTop = 0;
do{
el += el.offsetTop;
}while(el = el.offsetParent);
window.scrollTo(0, elTop);
和
var elTop = (el.getBoundingClientRect()).top;
window.scrollTo(0, elTop);
在这两种情况下,elTop都太高,scrollTo跳得太远。
我在线尝试了此脚本。当我使用Firefox下载整个页面时,它突然起作用了。在线/离线的视觉外观或结构没有差异。
仅更改了body的offsetHeight以及搜索到的元素的offsetTop。
这些属性如何在没有任何视觉效果的情况下发生变化?
最佳答案
为避免出现上述问题,您应该考虑使用getBoundingClientRect()+“页面滚动”,而不是计算所有元素的偏移量。
var yPosition = element.getBoundingClientRect().top + window.pageYOffset;
http://jsbin.com/ukuRaXe/2/edit
请注意,此解决方案在