Vue2 VueRouter 路由滚动
注意: 这个功能只在支持 history.pushState 的浏览器中可用
第三个参数 savedPosition
当且仅当 popstate
导航 (通过浏览器的 前进/后退 按钮触发) 时才可用
返回值:
- { x: number, y: number }
- { selector: string, offset? : { x: number, y: number }}
- 若返回一个 falsy 的值,或者是一个空对象,那么不会发生滚动
- 返回 savedPosition
const router = new VueRouter({ routes:[..], scrollBehavior(to, from, savedPosition){ // return 期望滚动到哪个位置 if(savedPosition){ return savedPosition' }else{ return { x:0,y:0 } } } })
- 滚动到锚点
const router = new VueRouter({ routes:[..], scrollBehavior(to, from, savedPosition){ if(to.hash){ return { selector: to.hash } } } })
- 利用路由元 meta 信息更细颗粒度地控制滚动: 路由滚动例子
异步滚动
返回一个 Promise 来得出预期的位置描述:
将其挂载到从页面级别的过渡组件的事件上,令其滚动行为和页面过渡一起良好运行是可能的。但是考虑到用例的多样性和复杂性,我们仅提供这个原始的接口,以支持不同用户场景的具体实现
const router = new VueRouter({
routes:[..],
scrollBehavior(to, from, savedPosition){
return new Promise((resolve, reject) => {
setTimeout(()=>{
resolve({x:0,y:0})
}, 500)
})
}
})
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论