# Vue2.0 中路由切换页面动画
# 在 App.vue 中页面中
# 第一步:
用 transition 标签将 router-view 标签包裹住
<transition :name="transitionName">
<router-view></router-view>
</transition>
# 第二步
在 script 标签中的 data 中定义变量 transitionName,并且加上 watch 监听,这里的 watch 可以自己魔改
<script>
export default {
name: "App",
data() {
return {
transitionName: "",
};
},
//监听路由的路径,可以通过不同的路径去选择不同的切换效果
watch: {
//使用watch 监听$router的变化
$route(to, from) {
//如果to索引大于from索引,判断为前进状态,反之则为后退状态
console.log(to, "to");
console.log(from, "from");
if (to.meta.index > from.meta.index) {
//设置动画名称
this.transitionName = "slide-left";
} else {
this.transitionName = "slide-right";
}
},
},
};
</script>
# 第三步
在 css 中添加代码,目前测试 fiexd 的效果比较好
.slide-right-enter-active,
.slide-right-leave-active,
.slide-left-enter-active,
.slide-left-leave-active {
will-change: transform;
transition: all 500ms;
position: fixed;
}
.slide-right-enter {
opacity: 0;
transform: translate3d(-100%, 0, 0);
}
.slide-right-leave-active {
opacity: 0;
transform: translate3d(100%, 0, 0);
}
.slide-left-enter {
opacity: 0;
transform: translate3d(100%, 0, 0);
}
.slide-left-leave-active {
opacity: 0;
transform: translate3d(-100%, 0, 0);
}
# 第四步
在路由中给 meta 加上 index 熟悉,值自己给
// 首页
{
path: '/home',
name: 'home',
component: () => import('../views/Home/Home.vue'),
meta: {
index: 1
}
},
// 个人中心页
{
path: '/mine',
name: 'mine',
component: () => import('../views/Mine/Mine.vue'),
meta: {
index:2
},
},