Transition动画为什么只在进入时生效,退出时不触发?
我用CSS写了个简单的过渡效果,想让元素在显示和隐藏时都有淡入淡出动画,但目前只有显示的时候有动画,隐藏时直接消失了,完全没过渡。是不是哪里写错了?
我试过加了opacity和visibility,也确保了类名切换没问题,但退出动画就是不执行。
.fade-enter {
opacity: 0;
visibility: hidden;
}
.fade-enter-active {
opacity: 1;
visibility: visible;
transition: opacity 0.3s ease, visibility 0.3s ease;
}
.fade-exit {
opacity: 1;
visibility: visible;
}
.fade-exit-active {
opacity: 0;
visibility: hidden;
transition: opacity 0.3s ease, visibility 0.3s ease;
}
visibility: hidden会立即生效,元素直接没了,transition 根本没机会跑。退出动画需要用
transition-delay让 visibility 延迟生效,等 opacity 动画跑完再隐藏:或者更省事,直接用
pointer-events: none代替 visibility,省得折腾延迟。