全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-20 8 分钟 ✍️ juanwangdev

CSS过渡与动画

Vue 过渡系统与原生 CSS 深度集成,支持 transition 过渡和 @keyframes 动画两种方案。

CSS Transition 过渡

基础过渡

CSS
/* 淡入淡出 */
.fade-enter-active,
.fade-leave-active {
  transition: opacity 0.3s ease;
}

.fade-enter-from,
.fade-leave-to {
  opacity: 0;
}

/* 滑动效果 */
.slide-enter-active,
.slide-leave-active {
  transition: transform 0.3s ease;
}

.slide-enter-from,
.slide-leave-to {
  transform: translateX(-20px);
}

多属性过渡

CSS
.multi-enter-active,
.multi-leave-active {
  transition: opacity 0.3s ease, transform 0.3s ease;
}

.multi-enter-from,
.multi-leave-to {
  opacity: 0;
  transform: scale(0.9);
}

多个属性过渡使用逗号分隔,时长可独立设置。

CSS @keyframes 动画

进入动画

vue
<template>
  <Transition name="bounce" enter-active-class="animate__animated animate__bounceIn">
    <p v-if="show">弹跳进入</p>
  </Transition>
</template>

<style>
@keyframes bounceIn {
  0% {
    opacity: 0;
    transform: scale(0.3);
  }
  50% {
    opacity: 1;
    transform: scale(1.05);
  }
  70% {
    transform: scale(0.9);
  }
  100% {
    transform: scale(1);
  }
}

.bounce-enter-active {
  animation: bounceIn 0.5s ease;
}
</style>

自定义动画类

CSS
/* 使用第三方动画库 */
@import 'animate.css';

.custom-enter-active {
  animation-duration: 0.5s;
}

.custom-leave-active {
  animation-duration: 0.3s;
}

Transition 与 Animation 区别

特性TransitionAnimation
定义方式起始/结束状态@keyframes 关键帧
控制粒度两点之间过渡多关键帧精细控制
触发条件状态变化自动触发可自动播放或手动触发
适用场景简单显隐、位置变化复杂序列动画

自定义过渡类名

vue
<Transition
  enter-from-class="opacity-0"
  enter-active-class="transition-opacity duration-300"
  enter-to-class="opacity-100"
  leave-from-class="opacity-100"
  leave-active-class="transition-opacity duration-300"
  leave-to-class="opacity-0"
>
  <p v-if="show">自定义类名</p>
</Transition>

适用于 Tailwind CSS 等原子化 CSS 框架,避免手写完整样式。

duration 属性

vue
<!-- 统一时长 -->
<Transition :duration="500">
  <component :is="view" />
</Transition>

<!-- 分别设置进入/离开时长 -->
<Transition :duration="{ enter: 500, leave: 300 }">
  <component :is="view" />
</Transition>

当 Vue 无法自动推断动画时长时,使用 duration 显式指定。

要点总结

  • CSS transition 适用于简单状态过渡,@keyframes 适用于复杂动画
  • 支持原生 CSS、第三方动画库(如 Animate.css)、原子化 CSS(Tailwind)
  • enter-active-class 等属性可自定义过渡类名
  • 无法自动推断时长时使用 :duration 显式设置

存放路径: articles/VUE/进阶/过度动画与状态复用/CSS过渡与动画.md

📝 发现内容有误?点击此处直接编辑

← 上一篇 自定义指令基础
下一篇 → Vue过渡组件
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库