Animate
/impeccable animate
适用场景
- 界面在状态切换之间显得生硬、没有生命力。
- 加载、反馈或视图切换需要能解释“正在发生什么”的动效。
- 你要的是有纪律、带 reduced-motion 回退的动画。
什么时候用
/impeccable animate 适用于那些显得没有生命力的界面:状态切换又硬又突兀,加载只是突然冒出来,用户甚至不太确定自己的点击有没有被接收到。它的目标是补上那些真正传达状态的小动作:进入、退出、反馈,以及不同状态之间的过渡。
不要为了“更有活力”去加弹跳或弹簧动画。那是装饰,这个技能不会给你这种东西。
工作方式
这个技能会先识别哪些静态瞬间真的值得加入运动,再非常克制地落地:
- 进入与退出:元素以 200 到 300ms 的淡入淡出,配合轻微的 Y 轴位移或缩放出现和离开,绝不动画布局属性。
- 状态反馈:hover、active、focus、loading、success 都通过动效来传达,而不是突然切换。
- 视图切换:适合时用 shared-element transition,否则使用 fade-through。
- 进度与加载:skeleton、确定性进度条,以及能明确表达“还在工作中”的运动。
- 减少动态:每一段动画都必须有
prefers-reduced-motion回退。
缓动一律使用指数型(ease-out-quart、quint 或 expo),因为真实物体会平滑减速。除了进度指示器,不允许 bounce、elastic,也不允许线性缓动。
这个技能只会动画化 transform 和 opacity。如果你发现自己在动画 width、height、top 或 left,那就是做错了。高度过渡请用 grid-template-rows。
试试看
/impeccable animate the sign-up flow典型会加入这些内容:
- 邮箱输入框在
focus-visible时出现 focus glow(opacity + shadow,180ms) - 提交按钮在 loading 状态时,把 spinner 放在按钮内部,而不是额外放一个独立 spinner
- 成功界面以 opacity +
translateY(8px)进入,260ms,ease-out-quart - 错误信息通过
grid-template-rows下滑展开,而不是直接动画height,220ms - 每个过渡都提供
@media (prefers-reduced-motion: reduce)回退
常见陷阱
- 要求“更多动画”。 Animate 不是一个强度旋钮。它只会在动效真正传达状态的地方加动画,而不是到处都动。
- 删除 reduced-motion 回退。 这个技能会自动加上,它对可访问性来说是不可谈判的。
让想法变成真正交付的软件。
HagiCode 是面向项目开发的 AI 编码工作台:用 OpenSpec 工作流规划变更,多 Agent 并行执行,再由 Hero Scenario 让进度一目了然,把想法变成真正交付的软件。
- 智能
- OpenSpec 工作流把意图变成从提案到交付的可执行路径。
- 高效
- 多 Agent 并行推进调研、实现与审阅。
- 有趣
- 丰富、便捷的界面交互,让规划、Agent 执行和项目工作更容易跟进。
生态站点
快速链接
社区
© 2026 HagiCode | Powered By hagilight-starlight@0.18.0 | Branch: main | Commit: 4369090 | Built:
