返回技能库
开发 / 前端精选

Web 动画性能守则

帮助网页动画保持流畅,重点避免 CSS 过渡与 JavaScript 连续更新互相干扰。

查看安装方式

技能说明

适合旋转、轨道、视差、滚动联动、跑马灯和轮播等连续动效的开发与排障。技能覆盖 transition-all、requestAnimationFrame、transform/opacity、React 逐帧更新和实际位置采样;会先测量再修改,不用构建成功代替性能验收。

关于此技能

帮助网页动画保持流畅,重点避免 CSS 过渡与 JavaScript 连续更新互相干扰,以及布局反复重排。

核心能力

选择唯一驱动方式

对连续运动明确使用纯 CSS 或纯 JavaScript,避免 transition-all 与逐帧更新同时作用于同一属性。

按帧与时间计算

用 requestAnimationFrame 和经过时间计算运动,页面切到后台或掉帧时仍保持正确速度。

优先合成层属性

连续动画优先使用 transform 和 opacity,谨慎使用 will-change,并通过实际几何位置排查漂移。

适用场景

解决动画卡顿

定位旋转、轨道、视差、滚动联动、跑马灯和轮播中的抖动、拖尾或明显延迟。

优化 React 动画

减少逐帧状态更新和不必要重渲染,必要时用引用直接更新节点。

验收动效实现

用性能分析和实际位置采样验证动画轨迹、帧间行为与响应式表现,而不是只看构建是否通过。

使用步骤

  1. 01

    第一步:确认动画驱动

    找出连续更新的属性和 CSS transition,先排查 transition-all、setInterval 与逐帧布局写入。

  2. 02

    第二步:改为按帧合成

    用 requestAnimationFrame 配合 performance.now(),把位置、缩放和透明度尽量放到 transform 与 opacity。

  3. 03

    第三步:采样并复测

    在代表性设备和页面状态下测量帧间位置、轨道半径和滚动表现,确认修复没有引入其他卡顿。

常见问题

所有动画都必须使用 Canvas 吗?+

不需要。对约 100 个以内的界面元素,技能建议优先使用 DOM 加 transform/opacity;只有成千上万元素或确实需要像素级绘制时再考虑 Canvas。

will-change 越多越好吗?+

不是。它会占用 GPU 内存,只应加在确实持续动画的元素上,过度使用反而可能拖慢其他滚动和页面。

为什么截图正常仍然要测位置?+

有些轨迹漂移、布局重排或掉帧只在连续运动中出现,技能建议结合实际几何位置和性能数据验证,而不是只依赖静态截图。

安装前检查

把兼容性、来源和安装入口先看清楚,再放进自己的工作流。

信息卡
兼容平台

Claude Code · Codex · Cursor

来源状态

已提供来源链接

安装方式

命令可直接复制

最近整理

2026/09/03

安装提醒:即使有清晰的来源和安装方式,也建议先阅读 SKILL.md,确认它会访问哪些文件和服务。

安装命令
git clone https://github.com/swyxio/skills.git ~/Work/skills && ln -sf ~/Work/skills/web-animation-perf ~/.claude/skills/web-animation-perf

适用平台与标签

Claude CodeCodexCursorGitHub CopilotOpenCode兼容 Agent Skills#网页设计#动画性能#requestAnimationFrame#CSS#React
Web 动画性能守则 | AI 技能详情 - 小黑丸