以 skill 自身的术语
官方 GSAP 指南,教你通过选择开销小的属性并避免布局操作,使动画保持流畅的 60fps。它建议动画变换类的 key(x、y、scaleX、scaleY、rotation、rotationX、rotationY、skewX、skewY)和 opacity,而不是 width、height、top、left、margin 或 padding;只在实际参与动画的元素的 CSS 中使用 will-change;并在写入之前完成所有 DOM 读取,以避免布局抖动。
批处理指南涉及用 stagger 取代手动延迟的 tween、长列表虚拟化、鼠标跟随用 gsap.quickTo()、pin 与 scrub 的调优(配合去抖的 ScrollTrigger.refresh()),以及终止屏幕外的 tween。它是面向正在调优现有 GSAP 动画的设计师和开发者,而非从零构建动画。
它产出什么
- 一条要添加到动画元素 CSS 中的 will-change 声明。
- 一个针对 x 和 y 的 gsap.quickTo() 设置,由容器上的 mousemove 监听器驱动。
工作方式
- 01动画使用合成器友好的属性
将动画限制在变换类 key 和 opacity 上,使工作保留在合成器层,而不会触发布局与绘制。
- 02让 GSAP 批处理写入操作
GSAP 内部已经会批处理更新,因此风险在于你自己的 DOM 代码在其周围交错地进行读写。
- 03为高频变化的值复用同一个 tween
对于每次指针移动都要更新的属性,gsap.quickTo() 会保持单个 tween 存活,而不是每次更新都分配一个新的。
- 04控制滚动驱动的工作量
较小的 scrub 值,例如 scrub: 1,可以减少滚动期间的工作量,但文档说明要在低端设备上测试该设置。
- 05停止你看不到的动画
暂停或终止屏幕外及非活动的动画,例如当用户离开该区块时。