1实现原理 · 为什么它能做到
技术无关的底层:不选技术栈,产出是可直接交给任何实现的「具体数字」——时长、cubic-bezier、stagger 偏移、spring 配置。
It does not pick a tech stack; it produces concrete numbers (durations, cubic-bezier curves, stagger offsets, spring configs) ready to hand to any implementation.
先立三支柱(情感意图 / 视觉叙事 / 动作工艺)再定任何数字;跳过这步就会得到「技术上正确但毫无感觉」的动作。
Every piece of motion should answer three questions *before* you pick a duration or curve.
用三层运动模型(Primary/Secondary/Ambient)解释「扁平感」,并与判断层 skill 的 Hero/Support/Texture 显式对齐。
Flat motion = only the main thing moves. Believable motion runs three layers at once:
缓动被定为最大杠杆:linear 只留给连续循环,离散事件必须有加速度,并按进/出/位移/品牌四类给具体曲线。
Linear motion reads as robotic. Reserve `linear` for continuous loops (spinners, marquees, infinite scroll) only.
时长按元素尺度分四档(微交互 100-200ms → 电影镜头 800-2000ms),并要求距离/面积变化时等比放大时长。
Distance and size scale duration.
交错与 1/3 规则两形态用来防止「整组一起出现」——列表 40-80ms、密集网格 20-40ms,总量受 600-800ms 上限约束。
Never reveal a list, grid, or group all at once — it reads as a single flat event. Stagger each child's start.
诊断表把症状反向映射到成因(stiff/floaty/cheap/mechanical),使 review 变成可执行的修复清单。
- **Feels stiff/robotic** -> using `linear` or symmetric easing on an enter; switch to ease-out.
手工关键帧路线被映射到 AE 的 Graph Editor:F9 的 Easy Ease 只是 33% 对称起点,必须做成非对称。
`F9` (Easy Ease) is only a 33% symmetric starting point — make it asymmetric.
2核心能力
3外部依赖
| 类型 | 依赖 |
|---|---|
| package | @react-spring/web(示例 spring 预设值,仅作参考实现) |
| package | SwiftUI / iOS 动画 API(示例 spring 写法,跨平台参考) |
| package | After Effects Graph Editor(手工缓动的落地工具) |
4风险提醒 风险提醒:绿色 · 放心使用
- 数值是锚点而非答案 — 曲线与时长是跨项目通用的起点,但品牌气质、平台(web vs 视频)与设备性能会让最优值偏移;照抄而不做感知验证容易出现「哪里都对但就是不对」的结果。
- 两处曲线体系并存需自行裁定 — SKILL.md 的 Quick reference 与 easing-curves.md 的 Material 标准曲线族不是同一套取值,文档没给「该用哪套」的规则;混用会导致产品内不一致(可参照 brand-motion-guidelines 的令牌化做法解决)。
- 经验系数无出处 — 距离-时长缩放(+30-50%)、stagger 上限(600-800ms)、1/3 规则等均为经验性断言,仓库内无数据来源(见 second_pass 的 unlocatable 条)。
- 认知层引导 — 它会把审美选择(多快、多弹)导向特定取向(克制、减速入位);追求极端风格化动作时需有意识偏离。
5第二遍独立确认
- [ok] SKILL.md 的曲线值是否与 reference 一致(防两处打架) — SKILL.md 的 Quick reference(Enter `cubic-bezier(0.16, 1, 0.3, 1)`、Exit `(0.7, 0, 0.84, 0)`、Move `(0.65, 0, 0.35, 1)`、Branded `(0.34, 1.56, 0.64, 1)`)与 easing-curves.md 的分族库同型;但 reference 另列一套 Material 标准曲线(如 `0.2, 0, 0, 1`),两套体系并存且文档未给裁决规则——属文档分层而非矛盾,已在 risks 记录。
- [ok] 是否真的没有脚本或可执行资产 — 清点后目录内只有 5 个文件(SKILL.md、3 本 .md reference、1 个 0 字节 README),无 .js/.sh/.py/.json。
- [ok] 「技术无关」声明是否成立(有没有偷偷选边) — 自带代码示例覆盖 CSS 曲线、Framer Motion、react-spring、SwiftUI 与 AE 手工关键帧,且 SKILL.md 明确说「不选技术栈」;示例之间是并列参考,无强制依赖。
- [ok] 交叉引用是否指向真实存在的上游(本 pack 内) — 被引的 motion-art-direction(Hero/Support/Texture)与 shot-composition 都在同一仓库 skills/ 下存在;引用只做术语对齐,不要求安装额外 skill。
- [unlocatable] 「距离或面积翻倍加 30-50% 时长」等缩放系数的来源 — 这是经验规则,pin 仓库内无出处、无测量脚本、无数据文件。作为文档声明记录,不当作已核事实;实际项目应以感知测试校准。
6结论
069d807fa45f71f5…3c129f769d