會有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特性,相反,咱們只須要使用動態組件: