官方文檔:
https://router.vuejs.org/zh/guide/advanced/scroll-behavior.html#%E5%BC%82%E6%AD%A5%E6%BB%9A%E5%8A%A8
使用前端路由,當切換到新路由時,想要頁面滾到頂部,或者是保持原先的滾動位置,就像重新加載頁面那樣。 vue-router
能做到,而且更好,它讓你可以自定義路由切換時頁面如何滾動。
實際例子:通過vue-router提供的scrollBehavior函數來控制滾動的位置的不由切換頁面而改變
1 //創建路由 2 export const createRouter = () => new VueRouter({ 3 // https://router.vuejs.org/zh/guide/advanced/scroll-behavior.html#%E5%BC%82%E6%AD%A5%E6%BB%9A%E5%8A%A8 4 // 這個方法 是控制滾動條 5 // 如果 retuen falsy || {} ,則不發生滾動 6 scrollBehavior (to, from, savedPosition) { 7 // savedPosition 這個參數當且僅當導航 (通過瀏覽器的 前進/后退 按鈕觸發) 時才可用 效果和 router.go() 或 router.back() 8 if (savedPosition) { 9 // 返回savedPosition 其實就是 當用戶點擊 返回的話,保持之前游覽的高度 10 return savedPosition 11 } else { 12 if (from.meta.keepAlive) { 13 from.meta.savedPosition = document.body.scrollTop 14 } 15 return { 16 x: 0, 17 y: to.meta.savedPosition || 0 18 } 19 } 20 }, 21 mode: 'history', 22 routes: [...PageRouter, ...ViewsRouter] 23 })