vue router 的 scrollbehavior 通过返回滚动对象(如 {top: 0}、{el: '#main'})控制跳转滚动位置,需配合 html {scroll-behavior: smooth} 实现平滑效果,并利用 savedposition 保留历史滚动位置。

Vue Router 的 scrollBehavior 是实现路由跳转时平滑滚动的核心配置,它让你能精确控制页面滚动位置,比如回到顶部、保留原位置或滚动到某个元素。关键在于正确返回一个滚动对象(含 top、left、behavior 等字段),并配合 CSS 的 scroll-behavior: smooth 实现视觉上的“平滑”效果。
基础用法:返回滚动坐标对象
在创建 router 实例时,通过 scrollBehavior 函数返回目标滚动位置:
- 返回
{ top: 0 }→ 每次跳转都自动滚动到页面顶部 - 返回
{ top: 100 }→ 滚动到距顶部 100px 处 - 返回
{ el: '#main' }→ 滚动到 ID 为main的元素顶部(支持 CSS 选择器) - 返回
{ left: 0, top: 0, behavior: 'smooth' }→ 显式启用平滑动画(默认为auto,无动画)
保留滚动位置:用 savedPosition 判断
当用户点击浏览器前进/后退按钮时,Router 会把上一次的滚动位置存入 savedPosition。你可以优先使用它,实现“返回即回到原位置”:

