vue 实现返回顶部
vue 实现返回顶部的方法
使用 scrollTo 方法
通过监听滚动事件,当页面滚动到一定位置时显示返回顶部按钮,点击按钮时使用 window.scrollTo 方法平滑滚动到顶部。

<template>
<div>
<button v-if="showBackTop" @click="backToTop" class="back-top-btn">返回顶部</button>
</div>
</template>
<script>
export default {
data() {
return {
showBackTop: false
}
},
mounted() {
window.addEventListener('scroll', this.handleScroll)
},
beforeDestroy() {
window.removeEventListener('scroll', this.handleScroll)
},
methods: {
handleScroll() {
this.showBackTop = window.scrollY > 300
},
backToTop() {
window.scrollTo({
top: 0,
behavior: 'smooth'
})
}
}
}
</script>
<style>
.back-top-btn {
position: fixed;
right: 20px;
bottom: 20px;
padding: 10px;
background: #42b983;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
}
</style>
使用 requestAnimationFrame 实现平滑滚动
通过递归调用 requestAnimationFrame 实现更流畅的滚动效果。

methods: {
backToTop() {
const scrollStep = -window.scrollY / (500 / 15)
const scrollInterval = setInterval(() => {
if (window.scrollY !== 0) {
window.scrollBy(0, scrollStep)
} else {
clearInterval(scrollInterval)
}
}, 15)
}
}
使用第三方库 vue-scrollto
安装 vue-scrollto 库可以更方便地实现滚动效果。
npm install vue-scrollto
import VueScrollTo from 'vue-scrollto'
Vue.use(VueScrollTo)
methods: {
backToTop() {
this.$scrollTo('#app', 500, { easing: 'ease-in-out' })
}
}
使用 CSS scroll-behavior 属性
在全局 CSS 中添加以下样式,可以实现简单的平滑滚动效果(注意浏览器兼容性)。
html {
scroll-behavior: smooth;
}
注意事项
- 移动端可能需要考虑兼容性问题
- 滚动性能优化很重要,避免频繁触发滚动事件
- 返回顶部按钮的显示/隐藏阈值可以根据实际需求调整
- 销毁组件时需要移除事件监听器,防止内存泄漏
以上方法可以根据项目需求选择使用,其中第一种方法兼容性最好,第三种方法功能最丰富。






