术语图鉴/前端基础/动画
←→切换Esc返回

动画 Animation / Transition

你可能会说

页面切换太生硬了,帮我加一些过渡动画,淡入淡出那种。

动画是界面元素随时间变化的视觉过渡——让交互有反馈、页面有节奏、体验更流畅自然。

让页面元素平滑地从一个状态变到另一个状态,而不是「啪」地一下跳变。包括淡入淡出、滑动、缩放、旋转等。

也常被叫作过渡动画动效微交互Motion

生活类比

像翻书和瞬间切换幻灯片——动画让过渡自然,用户不会觉得突兀。

🎮 动手试试

点击「显示元素」对比效果

动画让状态变化有「过渡」,用户不会觉得突兀。这就是 transition / animation 的价值。

选择题选择一个你认为最合适的答案

以下哪个 CSS 属性变化不会触发重排(reflow),性能最好?

你可以这样告诉 AI

帮我给这个列表加动画:项目依次淡入(stagger 效果),hover 时上浮 2px + 阴影加深,用 Framer Motion 实现。

容易混淆?这样区分

动画 Animation / Transition≠
过渡 Transition

过渡是两态之间的简单变化(如 hover 变色),动画可以是多步骤、有关键帧的复杂序列。

动画 Animation / Transition≠
加载动画 Loading Spinner

加载动画只是动画的一种应用场景,动画涵盖范围更广(入场、退场、手势跟随等)。

什么时候用

状态变化反馈

按钮点击、开关切换、展开收起等操作需要视觉反馈

引导注意力

新内容出现、重要提示弹出,用动画引导用户视线

页面过渡

路由切换、模态框弹出时避免生硬跳变

什么时候不用

高频操作

每次按键都触发动画会让界面卡顿、分散注意力

纯数据展示

表格数据刷新不需要花哨动画,简单淡入即可

组成结构 · Anatomy

1
时长Duration

动画持续多长时间,通常 200-500ms 最舒适

2
缓动Easing

速度曲线:ease-out(快入慢出)最自然

3
属性Property

变化的属性:opacity、transform、scale、translate

4
延迟Delay / Stagger

多个元素依次出发的间隔时间

常见变体 · Variants

CSS Transition过渡

简单的两态变化,hover 效果首选

CSS Animation关键帧动画

@keyframes 定义多步骤动画序列

Framer MotionReact 动画库

声明式动画 + layoutId 共享元素过渡

GSAP专业动画引擎

复杂时间线、SVG 动画、滚动驱动

典型使用场景

卡片入场
告诉 AI「页面加载时卡片从下方 20px 淡入,每张间隔 50ms,用 spring 弹性效果」
模态框弹出
告诉 AI「点击按钮弹出模态框:背景渐暗 + 模态框从中心 scale 0.9→1 弹出」

延伸阅读