vue.js组件过渡最常用方式是集成animate.css:纯css类名驱动,通过transition的enter/leave-active-class挂载动画,支持css变量调控、transition-group列表动画及按需导入优化体积。

Vue.js 组件过渡效果最常用、最轻量的集成方式是搭配 CSS 动画库,其中 Animate.css 是首选。它无需 JavaScript 逻辑,纯类名驱动,与 Vue 的 <transition></transition> 天然契合,开箱即用且效果丰富。
直接引入 Animate.css 并绑定类名
这是最主流、最推荐的方式。Animate.css 提供了大量预设动画类(如 fadeIn、bounceIn、slideInLeft),只需通过 enter-active-class 和 leave-active-class 挂载即可:
- 安装:
npm install animate.css或通过 CDN 引入 - 在 main.js 或组件中全局/局部引入:
import 'animate.css' - 在模板中使用:
<transition enter-active-class="animate__animated animate__fadeIn" leave-active-class="animate__animated animate__fadeOut"></transition> - 注意:Animate.css v4+ 默认启用
animate__前缀,务必写全,否则动画不生效
自定义 CSS 变量控制动画参数
Animate.css 支持通过 CSS 自定义属性微调动画表现,适合统一管理或响应式适配:
- 在目标元素上设置:
style="--animate-duration: 1.2s; --animate-delay: 0.3s;" - 也可写进 class 中复用:
.my-card { --animate-duration: 0.8s; --animate-repeat: 2; } - 支持的变量包括:
--animate-duration、--animate-delay、--animate-iteration-count等
结合 transition-group 实现列表动画
当需要对多个动态项(如列表增删)添加逐个入场/退场效果时,必须用 <transition-group></transition-group> 替代 <transition></transition>:
<transition-group name="list" tag="ul"><li v-for="item in list" :key="item.id">{{ item.name }}</li></transition-group>- 配合 Animate.css 时,建议使用
enter-active-class+leave-active-class,避免用appear触发一次性入场 - 为保证顺序动画,可配合
stagger-enter类(需自行定义或借助插件),但原生 Animate.css 不内置 stagger,需额外 CSS 控制
按需导入 + Tree-shaking 优化体积
项目上线前若关注打包体积,可避免全量引入 Animate.css:
- 只导入所需动画:
@import 'animate.css/source/fading_entrances/fadeIn.css'; - Vite 或 Webpack 项目中,CSS 文件按需引用后能自动 tree-shake 未使用的动画规则
- 更进一步,可封装一个
useAnimate组合式函数,动态注入 class,减少模板冗余
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











