在网页中,本身很长的页面通过滚动条滚动起来,为了让用户方便快捷地返回页面顶部,我们需要在Vue中添加返回顶部功能。这个功能可以通过简单的代码实现,让用户愉快地浏览网页。
export default { data () { return { showBackTop: false,// 控制返回顶部按钮的显示与隐藏 distanceTop: 1000,// 滚动到多少距离时显示返回顶部按钮 timer: null,// 计时器 interval: 300,// 计时器事件间隔,控制滚动速度 duration: 500 // 返回顶部的动画时间 } },methods: { handleScroll () { const scrollTop = document.documentElement.scrollTop || document.body.scrollTop if (scrollTop > this.distanceTop) { this.showBackTop = true } else { this.showBackTop = false } },backToTop () { cancelAnimationFrame(this.timer) this.timer = requestAnimationFrame(timestamp => { const currentScrollTop = document.documentElement.scrollTop || document.body.scrollTop if (currentScrollTop > 0) { document.documentElement.scrollTop = document.body.scrollTop = currentScrollTop - currentScrollTop / this.duration * this.interval this.timer = requestAnimationFrame(this.backToTop) } else { cancelAnimationFrame(this.timer) } }) } },mounted () { window.addEventListener('scroll',this.handleScroll) },beforeDestroy () { window.removeEventListener('scroll',this.handleScroll) } }
首先,我们需要为Vue组件data设置几个参数,用以控制返回顶部按钮的相关设置。
showBackTop控制返回顶部按钮的显示和隐藏。
distanceTop表示滚动到多少距离时显示返回顶部按钮。
timer存储返回顶部操作的计时器。
interval表示每次计时器事件间隔,控制滚动速度。
duration表示返回顶部的动画时间。
接着,我们为Vue组件添加两个方法,用以控制滚动事件相关操作,及返回顶部操作。
handleScroll是滚动事件方法,通过获取当前滚动高度与distanceTop的比较结果,判断是否显示返回顶部按钮。
backToTop是返回顶部操作方法。它首先停止之前未完成的返回操作,重新设置计时器并设置callback回调,开始返回顶部操作。在回调函数中,首先获取当前滚动高度currentScrollTop,然后通过一个while循环,每次减去一定距离,实现了平滑的滚动效果。当当前滚动高度小于0时,取消回调函数。
最后,在Vue组件中调用handleScroll方法和backToTop方法,添加滚动事件监听,控制返回顶部按钮的显示和隐藏。在Vue的mounted和beforeDestroy钩子函数中,添加监听滚动事件和取消监听滚动事件,保证性能和避免内存泄漏。