用途:在优化 GSAP 动画、降低卡顿或询问动画性能最佳实践时使用,目标是保持流畅 60fps、降低布局与绘制开销。
主要能力与要点:
- 优先 transform 与 opacity。动画 x、y、scaleX、scaleY、rotation、rotationX、rotationY、skewX、skewY、opacity 可将工作留在合成器,避免布局与大部分绘制;应避免 width、height、top、left、margin、padding 等重布局属性。GSAP 的 x、y 默认使用 translate,移动时用它们替代 left/top。
- 对将要动画的元素在 CSS 中使用 will-change(如 will-change: transform),提示浏览器提升图层,但不要给所有元素“以防万一”设置。
- 批量读写。GSAP 内部会批量更新;与直接 DOM 读写或依赖布局的代码混用时,先完成所有读取再做所有写入,避免反复触发布局抖动。
- 多元素场景用 stagger 代替大量手工延迟的独立补间;长列表考虑虚拟化或只动画可见项;复用时间线,避免每帧新建。
- 频繁更新的属性(如鼠标跟随的 x/y)使用 gsap.quickTo(),它复用同一个补间而不是每次创建新补间。示例: let xTo = gsap.quickTo("#id", "x", { duration: 0.4, ease: "power3" }), yTo = gsap.quickTo("#id", "y", { duration: 0.4, ease: "power3" }); document.querySelector("#container").addEventListener("mousemove", (e) => { xTo(e.pageX); yTo(e.pageY); });
- ScrollTrigger:pin: true 会提升被固定元素,只固定必要元素;scrub 配合较小数值(如 scrub: 1)可减少滚动期间的工作量,需在低端设备测试;仅在布局确实变化(如内容加载后)调用 ScrollTrigger.refresh(),不要每次 resize 都调用,尽量防抖。
- 减少同时进行的工作:暂停或 kill 屏幕外、不活跃的动画;避免一次对大量元素动画大量属性,必要时简化或分批。
限制:以上为官方技能整理的最佳实践,具体项目需在低端设备上验证;资料未提供价格、平台或安装命令等信息。