返回顶部,动画效果


最简单的返回顶部就是window.scrollTo(0,0),但是这没有动画效果,我需要页面慢慢滚动的动画
1.添加监听

window.onscroll = () => {
            const vscroll = document.documentElement.scrollTop || document.body.scrollTop;
            if (vscroll > 1) {
                this.isScroll = true;
            } else {
                this.isScroll = false;
            }
            // 所有页面,向下滑动超过950px时显示
            if (vscroll > 950) {
                this.showUpTop = true;
            } else {
                this.showUpTop = false;
            }
};

2.这里我们需要用到一个函数requestAnimationFrame

window.requestAnimationFrame() 告诉浏览器——你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画。该方法需要传入一个回调函数作为参数,该回调函数会在浏览器下一次重绘之前执行

注意:若你想在浏览器下次重绘之前继续更新下一帧动画,那么回调函数自身必须再次调用window.requestAnimationFrame()

// 返回頂部
private backToTop() {
        const scrollToTop = () => {
            const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
            if (scrollTop > 0) {
                window.requestAnimationFrame(scrollToTop);
                window.scrollTo(0, scrollTop - scrollTop / 8);
            }
        };
        scrollToTop();
}

你可能感兴趣的:(返回顶部,动画效果)