Skip to content

5.3 动画与交互库

本节目标:了解主流动画库的定位,学会根据需求选择合适的动画方案,掌握与 AI 配合的提示词技巧。

一个恰到好处的动画,能让页面从"能用"变成"好用"。但过度动画会让用户头晕。老师傅说:"好动画应该是用户几乎察觉不到的——它只是让交互更流畅,而不是抢戏。"

Motion(原 Framer Motion)—— React 动画首选

Official Motion Examples | React, JS & Vue Animations

Motion(包名 motion,前身是 framer-motion)是 React 生态最流行的动画库,GitHub 30,000+ Star。你只需要描述"动画结束时元素长什么样",Motion 自己算出中间过程——和 React"描述结果而非步骤"的写法一致。

image-20260222213320488

常用动画场景和提示词

你想要的效果告诉 AI
元素淡入"用 Motion 给这个卡片加淡入动画"
列表逐个出现"用 Motion 的 staggerChildren 让列表项依次淡入"
拖拽排序"用 Motion 的 Reorder 组件实现拖拽排序"
页面切换动画"用 Motion 的 AnimatePresence 做页面过渡"
滚动触发动画"用 Motion 的 whileInView 在元素进入视口时触发动画"

GSAP —— 专业级动画引擎

GSAP —— 专业级动画引擎

Homepage | GSAP

GSAP(GreenSock Animation Platform)是 Web 动画领域的老牌王者,性能极强,能做出最复杂的动画效果。

image-20260222213406770

特点

  • 性能最强,复杂动画不掉帧
  • 支持时间线(Timeline),可以编排多个动画的先后顺序——类似剪辑视频时的时间轴,你可以安排哪个动画先播、哪个后播、中间隔多久
  • 插件丰富:ScrollTrigger(滚动触发)、Draggable(拖拽)、MorphSVG(SVG 变形)
  • 不限于 React,任何框架都能用

适合场景

  • 营销落地页的炫酷滚动动画
  • 复杂的 SVG 动画和路径动画
  • 需要精确控制时间线的动画序列
  • 性能要求极高的场景

提示词示例

"用 GSAP 的 ScrollTrigger 做一个滚动视差效果(就是你在 Apple 官网常看到的那种,背景和前景滚动速度不一样),背景图片比内容滚动慢"

"用 GSAP Timeline 做一个开场动画:先 Logo 淡入,然后标题从左滑入,最后按钮弹出"

Three.js —— 3D 效果的终极武器

Three.js – JavaScript 3D Library

如果你想在网页上做 3D 效果,Three.js 是唯一的选择。配合 React 封装库 @react-three/fiber,可以用 React 组件的方式写 3D 场景。

image-20260222213553727

适合场景

  • 3D 产品展示(旋转查看)
  • 粒子效果背景
  • 交互式 3D 场景
  • 数据可视化的 3D 图表

列表交错淡入

点击「播放」查看效果

滚动触发

向下滚动查看卡片动画
向下滚动 ↓
🎬
星际穿越
2014
🎬
盗梦空间
2010
🎬
信条
2020
🎬
奥本海默
2023

轻量级动画方案

不是所有动画都需要引入大型库。有些简单效果用 CSS 就够了:

效果方案是否需要库
按钮悬停变色CSS transition不需要
元素淡入淡出CSS @keyframes不需要
简单的滑入滑出Tailwind CSS animate-*不需要
列表项交错动画Motion需要
复杂滚动动画GSAP ScrollTrigger需要
3D 效果Three.js需要

提示词示例

"给这个按钮加一个悬停效果,用纯 CSS transition,不要引入额外的库"

"这个加载动画用 Tailwind 的 animate-spin 就行,不需要 Motion"

动画库选择决策树

你需要什么动画?

动画的度

少即是多

  • 动画时长控制在 200-500ms,太快看不清,太慢觉得卡
  • 用户主动触发的动画(点击、悬停)可以明显一点
  • 自动播放的动画(进入视口)要含蓄一点
  • 移动端减少动画,省电省流量

下一步

知道了怎么让页面动起来,但动成什么样才好看?继续看 5.4 UI 风格与灵感,找找设计灵感。