<transition>标签
想让路由有过渡动画,需要在<router-view>
标签的外部添加<transition>
标签,标签还需要一个name
属性。
<transition name="fade"> <router-view ></router-view> </transition>
我们在/src/App.vue
文件里添加了<transition>
标签,并给标签起了一个名字叫fade
。
css过渡类名:组件过渡过程中,会有四个CSS类名进行切换,这四个类名与transition
的name
属性有关,比如name="fade"
,会有如下四个CSS类名:
fade-enter:进入过渡的开始状态,元素被插入时生效,只应用一帧后立刻删除。
fade-enter-active:进入过渡的结束状态,元素被插入时就生效,在过渡过程完成后移除。
fade-leave:离开过渡的开始状态,元素被删除时触发,只应用一帧后立刻删除。
fade-leave-active:离开过渡的结束状态,元素被删除时生效,离开过渡完成后被删除。
从上面四个类名可以看出,fade-enter-active
和fade-leave-active
在整个进入或离开过程中都有效,所以CSS的transition
属性在这两个类下进行设置。
那我们就在App.vue
页面里加入四种CSS样式效果,并利用CSS3的transition
属性控制动画的具体效果。代码如下:
.fade-enter { opacity:0; } .fade-leave{ opacity:1; } .fade-enter-active{ transition:opacity .5s; } .fade-leave-active{ opacity:0; transition:opacity .5s; }
上边的代码设置了改变透明度的动画过渡效果,但是默认的mode
模式是in-out
模式,这并不是我们想要的。下面我们学一下mode
模式。
过渡模式mode:
in-out:新元素先进入过渡,完成之后当前元素过渡离开。
out-in:当前元素先进行过渡离开,离开完成后新元素过渡进入。