vue实现回顶部
Vue 实现返回顶部功能
返回顶部功能可以通过多种方式实现,以下介绍几种常见的方法:
使用原生 JavaScript 实现
在 Vue 组件中直接使用原生 JavaScript 的 window.scrollTo 方法实现平滑滚动:
methods: {
scrollToTop() {
window.scrollTo({
top: 0,
behavior: 'smooth'
});
}
}
在模板中添加一个按钮触发该方法:
<button @click="scrollToTop">返回顶部</button>
使用第三方库
可以使用 vue-scrollto 库实现更丰富的滚动效果:
安装库:

npm install vue-scrollto
在组件中使用:
import VueScrollTo from 'vue-scrollto'
export default {
methods: {
scrollToTop() {
VueScrollTo.scrollTo('body', 500, { easing: 'ease' })
}
}
}
添加滚动监听
通过监听页面滚动事件,控制返回顶部按钮的显示与隐藏:
data() {
return {
isShowBackTop: false
}
},
mounted() {
window.addEventListener('scroll', this.handleScroll)
},
beforeDestroy() {
window.removeEventListener('scroll', this.handleScroll)
},
methods: {
handleScroll() {
this.isShowBackTop = window.scrollY > 300
},
scrollToTop() {
window.scrollTo({
top: 0,
behavior: 'smooth'
})
}
}
模板中添加条件渲染:

<button v-show="isShowBackTop" @click="scrollToTop">返回顶部</button>
使用 CSS 动画
可以通过 CSS 添加过渡效果,使按钮显示更平滑:
.back-top {
position: fixed;
right: 20px;
bottom: 20px;
transition: all 0.3s ease;
}
封装为组件
可以将返回顶部功能封装为可复用的组件:
// BackTop.vue
<template>
<button
v-show="visible"
@click="scrollToTop"
class="back-top"
>
↑
</button>
</template>
<script>
export default {
data() {
return {
visible: false
}
},
mounted() {
window.addEventListener('scroll', this.handleScroll)
},
beforeDestroy() {
window.removeEventListener('scroll', this.handleScroll)
},
methods: {
handleScroll() {
this.visible = window.scrollY > 300
},
scrollToTop() {
window.scrollTo({
top: 0,
behavior: 'smooth'
})
}
}
}
</script>
然后在需要的地方引入该组件即可。
以上方法可以根据项目需求选择适合的实现方式,原生 JavaScript 方法简单直接,第三方库提供更多功能选项,封装组件则更适合需要多处使用的情况。






