← ClaudeAtlas

motion-foundationslisted

动画与 UI 动效的「决策框架 + 铁律 + 取值表」。做前端/动效前先过本技能——是否该动→目的→工具→属性→缓动/时长→中断→reduced-motion。提供 GPU 属性铁律、Never Ship 清单、自定义缓动曲线与时长表。由 ae-factory 在 DISCOVER/EXECUTE 阶段经 overlay 调用。
yang20040317-svg/design-workflow · ★ 0 · Web & Frontend · score 75
Install: claude install-skill yang20040317-svg/design-workflow
# Motion Foundations(动效基础决策层) > 来源:Emil Kowalski 的动画工程哲学(animations.dev)。本技能是「做程序」时的动效**决策与取值基线**,不写组件库、不审计代码库——那是 `motion-recipes` / `motion-review` / `motion-opportunities` 的事。 ## 何时用 - ae-factory 遇到前端/动效任务,规划或写代码前先套本技能做决策。 - 判断「该不该动」「用哪条曲线/多长」「动画哪个属性」时。 - 自检 `transition: all`、`scale(0)`、`ease-in` 等反模式。 ## 构建序列(按顺序回答,前两步是闸门) ### 1. 是否该动画?(频率闸门) | 频率 | 决策 | | --- | --- | | 100+ 次/天(快捷键、命令面板切换) | **绝不动画**,立即停止 | | 数十次/天(悬停、列表导航) | 仅近乎不可感知的快速微动,或不动 | | 偶尔(弹窗、抽屉、toast) | 标准动画 | | 罕见/首次(引导、成功、庆祝) | 愉悦预算在此处 | **键盘触发的动作是「一票否决」,不是判断题**——Raycast 没有开关动画,因为它每天被开几百次,那是正确的。 > 闸门没过:直接说「不该动」,给无动画替代方案(瞬时状态切换、静态 affordance)。**零代码有时就是正确答案。** ### 2. 目的是什么?(命名后才能继续) 必须是以下之一,用这个词命名: - **Feedback** 确认界面听到了用户 - **Spatial consistency** 展示某物从哪来/去哪了 - **State indication** 让状态变化可读 - **Preventing jarring change** 给会瞬移的内容搭桥 - **Explanation** 演示怎么用(仅营销/引导) - **Delight** 仅在「罕见/首次」档允许 说不出目的 = 别做。「看着酷」在高频元素上是停手的理由。 还要查**功能**:用户正在读或操作的数据,不��为风格而移动。装饰性鼠标跟随属于营销页,不属于银行 App 里的图表。 ### 3. 选工具(最便宜的够用即可) | 需求 | 工具 | | --- | --- | | 悬停、按下、颜色、用 class/attr 控制的切换 | **CSS transition** | | 挂载时的入场、无 JS 状态 | **CSS `@starting-style`** | | 页面忙时也必须流畅的预定动效 | **CSS animation**(跑在副线程) | | 程序化控制但又要 CSS 性能、不引库 | **WAAPI**(`element.animate()`) | | 弹簧、布局动画、出场、手势驱动值 | **Motion**(motion.dev) | CSS 动画在负载下胜 JS——它们跑副线程,而 rAF 动画在浏览器加载/脚本/绘制时会掉帧。预定动效用 CSS,动态可中断用 JS。 若任务要的是**组件**而非动效(toast、drawer、命令菜单、dropdown)——停手,调 `ui-library-selector`,别手写 `<div>` dropdown 然后没焦点管理。 ### 4. 选属性(GPU 铁律) - **只动 `transform` 和 `opacity`**。它们跳