在进入/离开的过渡中,会有 6 个 class 切换。
v-enter-active 和 v-leave-active 可以控制进入/离开过渡的不同的缓和曲线
CSS动画
<style>.fade-enter-active,.fade-leave-active {transition: transform 5s;}.fade-enter,.fade-leave-to {transform: translate(500px);}</style><body><div id="app"><!-- 框架会自动添加对应的fade类 --><transition name="fade"><div v-show="flag"></div></transition><button @click="flag=!flag">show</button></div><script type="text/javascript">let app = new Vue({el: '#app',data: {flag: true,},});</script></body>
自定义过渡的类名
我们可以通过以下 attribute 来自定义过渡类名:
enter-classenter-active-classenter-to-class(2.1.8+)leave-classleave-active-classleave-to-class(2.1.8+)自定义动画 ```html
hello
<a name="fniqo"></a>
## [JavaScript 钩子](https://cn.vuejs.org/v2/guide/transitions.html#JavaScript-%E9%92%A9%E5%AD%90)
可以在 attribute 中声明 JavaScript 钩子
```html
<transition
v-on:before-enter="beforeEnter"
v-on:enter="enter"
v-on:after-enter="afterEnter"
v-on:enter-cancelled="enterCancelled"
v-on:before-leave="beforeLeave"
v-on:leave="leave"
v-on:after-leave="afterLeave"
v-on:leave-cancelled="leaveCancelled"
>
<!-- ... -->
</transition>
// ...
methods: {
// --------
// 进入中
// --------
beforeEnter: function (el) {
// ...
},
// 当与 CSS 结合使用时
// 回调函数 done 是可选的
enter: function (el, done) {
// ...
done()
},
afterEnter: function (el) {
// ...
},
enterCancelled: function (el) {
// ...
},
// --------
// 离开时
// --------
beforeLeave: function (el) {
// ...
},
// 当与 CSS 结合使用时
// 回调函数 done 是可选的
leave: function (el, done) {
// ...
done()
},
afterLeave: function (el) {
// ...
},
// leaveCancelled 只用于 v-show 中
leaveCancelled: function (el) {
// ...
}
}
这些钩子函数可以结合 CSS transitions/animations 使用,也可以单独使用。
当只用 JavaScript 过渡的时候,在 enter 和 leave 中必须使用 done 进行回调。否则,它们将被同步调用,过渡会立即完成。
