技术知识文章集合TECHNICAL ARCHIVE · 807 DOCUMENTS

显示模式

登录
ARCHIVE DOCUMENTVIZ

GSAP 中文教程:核心基础

所属分类
Visualization
文件格式
Markdown
原始路径
Visualization/07-GSAP 中文教程:核心基础
本文目录7 个章节
  1. 一、Tween:一次状态变化
  2. 二、优先动画哪些属性
  3. 三、控制节奏:duration、ease、repeat 与 stagger
  4. 四、Timeline:编排多个动画
  5. 五、SVG、对象与 Canvas
  6. 六、入门后的实践原则
  7. 整理者注

GSAP 中文教程:核心基础

Category(分类): Visualization Status: 已读

原文:GSAP tutorial,好奇代码整理的 GSAP 官方教程中文翻译。 本文提炼 GSAP 入门模型;API、插件与许可请以 GSAP 官方文档 为准。

一、Tween:一次状态变化

GSAP 的基本单位是 Tween(补间动画):指定目标对象、目标状态和变化参数,运行时计算中间帧。

// 让 .box 向右移动 200px,持续 0.6 秒
gsap.to('.box', { x: 200, duration: 0.6 })

四种常用方法:

方法含义
gsap.to(target, vars)从当前状态变到目标状态,最常用
gsap.from(target, vars)从指定状态变到当前状态
gsap.fromTo(target, fromVars, toVars)显式指定起点和终点
gsap.set(target, vars)立即设置状态,不产生过渡(相当于 duration 为 0)

target 可为 CSS 选择器、DOM 元素或元素数组。vars 同时承载要变化的属性与控制参数。

二、优先动画哪些属性

GSAP 可以驱动 CSS 属性、SVG 属性、对象字段、CSS 变量,以及包含数值的复杂字符串。前端界面中通常应优先使用不触发布局重排的属性:

gsap.to('.card', {
  x: 24,
  yPercent: -10,
  rotation: 3,
  scale: 1.04,
  opacity: 1,
  duration: 0.4
})
GSAP 写法对应含义
x: 100 / y: 100水平 / 垂直平移,默认 px
xPercent: -50 / yPercent: -50按元素自身尺寸百分比平移
rotation: 360旋转,默认角度
scale: 2缩放
transformOrigin: '0% 100%'指定变换原点

相比频繁改 left、top、margin,transform 与 opacity 通常更适合流畅 UI 动画。滤镜、阴影等昂贵属性仍需在目标设备实测。

三、控制节奏:duration、ease、repeat 与 stagger

gsap.to('.item', {
  y: 0,
  opacity: 1,
  duration: 0.45,
  ease: 'power2.out',
  stagger: 0.08,
  delay: 0.1,
  repeat: 1,
  yoyo: true
})
  • duration:动画时长;
  • delay / repeatDelay:首次 / 重复前延迟;
  • repeat:重复次数,-1 表示无限重复;
  • yoyo:每轮结束后反向执行;
  • stagger:多目标错开启动;
  • ease:缓动曲线,例如 power1.out、bounce.out。

缓动不是装饰。ease-out 常用于响应 UI:起步快,结束自然;需要持续、线性地表达进度时则考虑 ease: 'none'。

四、Timeline:编排多个动画

多个动画若仅靠各自的 delay 互相对齐,一旦第一个时长变化,后续时间都会失控。应使用时间线:

const intro = gsap.timeline()

intro
  .from('.title', { y: 32, opacity: 0, duration: 0.5 })
  .from('.subtitle', { y: 16, opacity: 0, duration: 0.35 }, '-=0.15')
  .from('.actions > *', { y: 12, opacity: 0, stagger: 0.08 }, '-=0.1')

时间线将一组动作作为整体,便于统一播放、暂停、倒放、调整顺序和复用。第三个参数可用相对位置表达重叠关系,而无需硬编码所有绝对延迟。

五、SVG、对象与 Canvas

GSAP 不限于 DOM。SVG 可动画化位置、旋转、填充、描边和其他属性;普通对象的数值变化可在 onUpdate 中同步给 Canvas、Three.js 或业务状态:

const point = { x: 0, y: 0 }

gsap.to(point, {
  x: 200,
  y: 80,
  duration: 1,
  onUpdate() {
    // 这里按 point.x / point.y 重绘 Canvas 或更新场景对象
  }
})

这也是 GSAP 能与 Canvas、PixiJS、Three.js 等配合的原因:它负责时间插值和编排,渲染由你的目标对象完成。

六、入门后的实践原则

  1. 初始状态、终止状态和中断行为先于动画代码确定;
  2. 用 Timeline 管理成组的叙事,不滥用独立 delay;
  3. 不要在所有内容上同时使用无限循环与大范围滚动动画;
  4. 组件卸载时清理动画和滚动监听;
  5. 为 prefers-reduced-motion 设计静态或弱化版本;
  6. 对移动端、低性能设备和键盘操作单独验收。

整理者注

掌握 to / from / fromTo / set、ease / stagger 和 Timeline 已足够覆盖多数界面动效。等基础动作能够清晰表达界面状态后,再按需求进入滚动、拖拽、SVG 形变等插件能力。

807 DOCUMENTS · 12 COLLECTIONS
ARCHIVE SEARCH807 篇文章