会有6个css类名在leave/enter过渡中切换javascript
1,v-enter:定义进入过渡的开始状态,在元素被插入时生效,在下一帧中移除css
2,v-enter-active:定义过渡的状态。在元素整个过渡过程当中做用,在元素被插入时生效,在transition/animation完成后移除。这个类能够被用来定义过渡的过程时间,延迟和曲线函数。vue
3,v-enter-to:2.1.8版及以上,定义进入过渡的结束状态,在元素被插入一帧后生效(与此同时,v-enter被删除),在transition/animation完成以后移除。java
4,v-leave:定义离开过渡的开始状态。在离开过渡被触发时生效,在下一个帧删除。ajax
5,v-leave-active:定义过渡的状态。在元素整个过渡过程当中做用,在离开过渡被触发后当即生效,在transition/animation完成以后移除。这个类能够被用来定义过渡的过程时间,延迟和曲线函数,npm
6,v-leave-to:在2.1.8版本及以上,定义离开过渡的结束状态,在离开过渡被触发一帧过渡后生效,(与此同时v-leave被删除),在transition/animation完成后移除。app
对于这些在leave/enter过渡中切换的类名,v-是这些类名的前缀,使用<transition name="my-transition">能够重置前缀,好比v-enter替换为my-transition-enter.ide
v-enter-active和v-leave-active能够控制进入/离开过渡的不一样阶段。函数
css过渡oop
经常使用的过分都是使用css过渡
下面是一个简单的例子:
new Vue({
el: '#example-2',
data: {
show: true
}
})
|
.bounce-enter-active {
animation: bounce-in .5s;
}
.bounce-leave-active {
animation: bounce-in .5s reverse;
}
@
keyframes bounce-in {
0% {
transform: scale(0);
}
50% {
transform: scale(1.5);
}
100% {
transform: scale(1);
}
}
|
自定义过渡类名
咱们能够经过如下特性来自定义过渡类名:
enter-class
enter-active-class
enter-to-class
(2.1.8+)leave-class
leave-active-class
leave-to-class
(2.1.8+)他们的优先级高于普通的类名,这对于vue的过渡系统和其余第三方css动画库,如animation.css结合十分有用。
实例:
<transition>
<button v-if="isEditing" key="save">
Save
</button>
<button v-else key="edit">
Edit
</button>
</transition>
|
在一些场景中,也能够经过给同一个元素的key特性设置不一样的状态来代替v-if和v-else,上面的例子能够重写为:
// ...
computed: {
buttonMessage: function () {
switch (this.docState) {
case 'saved': return 'Edit'
case 'edited': return 'Save'
case 'editing': return 'Cancel'
}
}
}
|
只用添加一个简单的特性,就解决了以前的过渡问题而无需任何额外的代码。
in-out模式不常常用到,可是对于一些稍微不一样的过渡效果仍是有用的。
多个组件的过渡
多个组件的过渡很简单,-咱们不须要使用key特性,相反,咱们只须要使用动态组件: