我可能错过了一些内容,但我无法让window.scrollTo(0,0)
移到页面顶部。
我正在实施一个非常有效的粘性aside
。它使用.getBoundingClientRect()
来获取初始位置。
但是,如果页面部分滚动,并且我刷新页面,它会错误地读取位置,并且位于错误的位置。
我虽然通过在开头执行window.scrollTo(0,0)
来解决此问题,但页面位于顶部,aside
位于正确的位置。
当我运行代码时,window.scrollTo(0,0)
似乎没有任何区别。
让重新加载的窗口从顶部开始的正确方法是什么?
我在Mac上的Firefox上测试过它。 Chrome和Safari也有类似的行为。
请不要jQuery。
答案 0 :(得分:5)
您是否尝试过在scrollTo之前等待页面加载?尝试使用window.onload
window.onload = function(){
window.scrollTo(0,0);
}
答案 1 :(得分:1)
现在,使用javascript,使用滚动效果转到页面顶部会更加容易:
https://developer.mozilla.org/en-US/docs/Web/API/Window/scroll
window.scroll({
top: 0,
left: 0,
behavior: 'smooth'
});
注意
我刚刚在更新答案时检查了mozilla文档,我相信它已经更新了。现在,该方法是window.scroll(x-coord,y-coord),并且没有提及或显示使用object参数的示例,在该示例中可以将行为设置为平滑。我只是试过了代码,它仍然可以在chrome和firefox中使用,并且object参数仍在规范中。
或者在Vanilla中,您可以将window.onload事件与scrollTo(x,y)函数一起使用
window.onload = function(){
window.scrollTo(0,0);
}