router.beforeEach((to, from) => {
if (to.meta.index > from.meta.index) {
state.transitionName = 'slide-left' // 向左滑动
} else if (to.meta.index < from.meta.index) {
// 由次级到主级
state.transitionName = 'slide-right'
} else {
state.transitionName = '' // 同级无过渡效果
}
})
css部分
.slide-right-enter-active,
.slide-right-leave-active,
.slide-left-enter-active,
.slide-left-leave-active{
height: 100%;
will-change: transform;
transition: all 500ms;
position: absolute;
backface-visibility: hidden;
}
.slide-right-enter{
opacity: 0;
transform: translate3d(-100%, 0, 0);
}
.slide-right-leave-active{
opacity: 0;
transform: translate3d(100%, 0, 0);
}
通过监控路由来实现跳转的效果, 当然,还要在router文件配置: 例如:
{
path: '/user',
name: 'user',
component: () => import(/* webpackChunkName: "user" */ '@/views/User.vue'),
meta: {
index: 1
}
}