Open Narutocc opened 6 years ago
1. 页面滚动之后,刷新浏览器会发现滚动条依然在原来的位置,这是浏览器的默认行为,记录浏览器滚动条默认位置;但是点击浏览器“前进/后退”按钮,会发现页面滚动条从0开始,没有记录上一次的位置;或者是进入到其他路由再返回该路由,也是从0开始。
2. 因为vue是单页面应用框架,整个项目就一个window对象。所以使用vue官方提供的进阶功能——滚动行为,通过这个功能,可以自定义路由切换时页面如何滚动。
router/index.js
let router = new VueRouter({ routes, mode: 'history', scrollBehavior (to, from, savedPosition) { if (savedPosition) { return savedPosition } else { if (from.meta.keepAlive) { from.meta.savedPosition = document.body.scrollTop } return { x: 0, y: to.meta.savedPosition || 0 } } } })
vue路由中设置滚动行为(scrollBehavior)
1. 页面滚动之后,刷新浏览器会发现滚动条依然在原来的位置,这是浏览器的默认行为,记录浏览器滚动条默认位置;但是点击浏览器“前进/后退”按钮,会发现页面滚动条从0开始,没有记录上一次的位置;或者是进入到其他路由再返回该路由,也是从0开始。
2. 因为vue是单页面应用框架,整个项目就一个window对象。所以使用vue官方提供的进阶功能——滚动行为,通过这个功能,可以自定义路由切换时页面如何滚动。
router/index.js