【发布时间】:2017-08-06 20:46:56
【问题描述】:
我正在使用 Vue 2 并尝试在频繁创建和销毁的元素上包含 CSS 动画。以下是我的代码示例:
export default {
name: 'MyElement',
methods: {
enterStart: function (el) {
console.log('about to enter');
el.classList.add('testing-enter');
},
enter: function (el) {
console.log('entered');
},
leaveStart: function (el) {
console.log('starting to leave!');
},
leave: function (el) {
console.log('leaving!');
},
}
};
.testing-enter {
animation: enter .2s;
}
.testing-leave {
animation: leave .2s;
}
@keyframes enter {
0% {
opacity: 0;
transform: scale(0);
}
100% {
opacity: 1;
transform: scale(1);
}
}
@keyframes leave {
0% {
opacity: 1;
transform: scale(1);
}
100% {
opacity: 0;
transform: scale(0);
}
}
<template>
<div>
<transition
@before-enter="enterStart"
@enter="enter"
@leave="leaveStart"
@leave-active="leave"
appear
>
<div>My element is here!</div>
</transition>
</div>
</template>
首先,除非我在 <transition ...> 元素中包含 appear,否则这些都不起作用。我知道这会使过渡在初始渲染时发生,但我希望它们在元素被创建或销毁时发生。
接下来,在我的控制台中。我可以看到enterStart 和enter 都在运行,但leaveStart 和leave 从不运行,即使元素被破坏。我做错了什么?
【问题讨论】:
-
我刚刚为测试创建了这个代码笔link
-
@marceloch2 谢谢!
标签: javascript css vue.js css-animations vuejs2