vue 实现淡入淡出
淡入淡出动画实现方法
CSS Transition 方法
通过 Vue 的 <transition> 组件结合 CSS 的 transition 属性实现。需定义进入和离开的过渡样式:
<transition name="fade">
<div v-if="show">内容</div>
</transition>
.fade-enter-active, .fade-leave-active {
transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to {
opacity: 0;
}
CSS Animation 方法
使用 @keyframes 定义动画,通过 Vue 的 <transition> 组件触发:

.fade-enter-active {
animation: fade-in 0.5s;
}
.fade-leave-active {
animation: fade-in 0.5s reverse;
}
@keyframes fade-in {
0% { opacity: 0; }
100% { opacity: 1; }
}
动态控制过渡时间
通过绑定 duration 属性动态调整过渡时长:
<transition :duration="{ enter: 500, leave: 800 }">
<div v-if="show">内容</div>
</transition>
结合 JavaScript 钩子
使用 Vue 的 JavaScript 过渡钩子实现更复杂的逻辑:

<transition
@before-enter="beforeEnter"
@enter="enter"
@leave="leave"
>
<div v-if="show">内容</div>
</transition>
methods: {
beforeEnter(el) {
el.style.opacity = 0;
},
enter(el, done) {
anime({
targets: el,
opacity: 1,
duration: 500,
complete: done
});
},
leave(el, done) {
anime({
targets: el,
opacity: 0,
duration: 500,
complete: done
});
}
}
第三方动画库
使用如 Animate.css 等库快速实现预设动画:
<transition
enter-active-class="animate__animated animate__fadeIn"
leave-active-class="animate__animated animate__fadeOut"
>
<div v-if="show">内容</div>
</transition>
需先安装并导入动画库:
npm install animate.css
import 'animate.css';






