Vanilla JavaScript:滚动到页面顶部

时间:2017-09-15 08:00:53

标签: javascript scrolltop

我可能错过了一些内容,但我无法让window.scrollTo(0,0)移到页面顶部。

我正在实施一个非常有效的粘性aside。它使用.getBoundingClientRect()来获取初始位置。

但是,如果页面部分滚动,并且我刷新页面,它会错误地读取位置,并且位于错误的位置。

我虽然通过在开头执行window.scrollTo(0,0)来解决此问题,但页面位于顶部,aside位于正确的位置。

当我运行代码时,window.scrollTo(0,0)似乎没有任何区别。

让重新加载的窗口从顶部开始的正确方法是什么?

我在Mac上的Firefox上测试过它。 Chrome和Safari也有类似的行为。

请不要jQuery。

2 个答案:

答案 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);
}