我正在使用Vue 2並嘗試在頻繁創建和銷燬的元素上包含CSS動畫。下面是我的代碼示例:Vue.js動畫無法正常工作
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>
首先,這一切都不工作,除非我有appear
在我<transition ...>
元素。我知道這會使轉換在初始渲染時發生,但是我希望它們在元素被創建或銷燬時發生。
接下來,在我的控制檯中。我可以看到enterStart
和enter
都運行,但是leaveStart
和leave
從不運行,即使元素被破壞。我究竟做錯了什麼?
我剛剛創造了這個codepen測試[鏈接](http://codepen.io/marceloch2/ pen/oZGpPd?editors = 1000) – marceloch2
@ marceloch2謝謝! – Zach