一、最实用方法:

window.scrollTo({ 
  top: 0,
  behavior: "smooth"
});

调用 scrollTo 方法,并设置 behavior 动画效果。等同于自己手动设置元素的 scrollTop = 0 

window.scrollTo 说明:

语法1: 

 window.scrollTo(x-coord,y-coord)


  • ​x-coord​​ 是文档中的横轴坐标。
  • ​y-coord​​ 是文档中的纵轴坐标。

语法2:

 window​​.scrollTo(options)​


  • ​top​​​ 等同于  ​​y-coord​
  • left 等同于  ​​x-coord​
  • ​behavior​​  类型String,表示滚动行为,支持参数 smooth(平滑滚动),instant(瞬间滚动),默认值auto,实测效果等同于instant

More:

scroll()  此方法接收两个参数,依次为X坐标和Y坐标;设置滚动条的偏移位置

scrollTo() 此方法和scroll()作用一样,都是设置滚动条的偏移位置。

scrollBy() 此法发同样接收两个参数,不过参数分别为X轴的偏移量和Y轴的偏移量,并且可以增加或者减少。


二、最粗暴的方法:

window.scrollTop = 0;

直接设置滚动条高度为0,该方法效果比较突兀,体验不好。


三、自定义方法:

const ScrollTop = (number = 0, time) => {
if (!time) {
document.body.scrollTop = document.documentElement.scrollTop = number;
return number;
}
const spacingTime = 20; // 设置循环的间隔时间 值越小消耗性能越高
let spacingInex = time / spacingTime; // 计算循环的次数
let nowTop = document.body.scrollTop + document.documentElement.scrollTop; // 获取当前滚动条位置
let everTop = (number - nowTop) / spacingInex; // 计算每次滑动的距离
let scrollTimer = setInterval(() => {
if (spacingInex > 0) {
spacingInex--;
ScrollTop(nowTop += everTop);
} else {
clearInterval(scrollTimer); // 清除计时器
}
}, spacingTime);
};

该方法支持向上和向下滚动

// 滚动到距离页面顶部500px的位置 动画时间为200ms

ScrollTop(500, 200);