前言:在后台开发的过程中,页面经常有路由的转换,但是由于转换过程太过于死板,所以想给它加入一点点动画效果,或者是淡入/淡出效果,提高体验
具体方法
在Vue2中,可以在路由router-view上加上transition和效果即可
 是基本的动态组件,所以我们可以用组件给它添加一些过渡效果
| 12
 3
 
 | <transition name="slide-fade"><router-view></router-view>
 </transition>
 
 | 
Vue3
| 12
 3
 4
 5
 
 | <router-view v-slot="{ Component }"><transition name="slide-fade">
 <component :is="Component" />
 </transition>
 </router-view>
 
 | 
或者:
| 12
 3
 4
 5
 6
 7
 
 | <RouterView v-slot="{ Component }"><transition name="slide-fade" >
 <keep-alive>
 <component class="child-view" :is="Component" :key="key" v-show="is_show"/>
 </keep-alive>
 </transition>
 </RouterView>
 
 | 
该过渡效果的CSS:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 
 | .slide-fade-leave-to {
 opacity: 0;
 transform: translateX(50px)
 }
 
 .slide-fade-enter-from {
 opacity: 0;
 transform: translateX(-50px)
 }
 
 
 .fade-enter {
 opacity: 0;
 transform: translateX(-50px);
 }
 
 .fade-leave-to{
 opacity: 0;
 transform: translateX(50px)
 }
 
 .fade-enter-active,
 .fade-leave-active {
 
 transition: all .6s cubic-bezier(.55, 0, .1, 1);
 }
 
 
 | 
Vue3中enter事件的css可能会失效,需要重写
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 
 | .fade-enter-from {  opacity: 0;
 transform: translateX(-30px);
 }
 
 .fade-enter-to {
 opacity: 1;
 transform: translateX(0px);
 }
 
 .fade-leave-to{
 opacity: 0;
 transform: translateX(100px)
 }
 
 .fade-enter-active,
 .fade-leave-active {
 
 transition: all .6s cubic-bezier(.55, 0, .1, 1);
 }
 
 
 | 
transiton的属性及其含义:
- name为过渡效果名,后续的css样式需要与 name建立关系,以name替代上面的v
- mode设置动画模式,原先进入和离开的元素都是在同时开始动画的,使用mode=”out-in”可以先执行完离开动画,然后再执行进入动画