关于 universal-elements
面向 UI 设计师与开发者的通用元素动画指南,说明如何将迪士尼 12 项原则用于界面动效。它提供时长建议、关键属性和 CSS 基础设置。
主要功能
- 01将 12 项动画原则用于界面
- 02按元素类型提供时长范围
- 03涵盖常见 CSS 动画属性
- 04提供 CSS 基础配置
适用场景
- 01规划按钮和图标的交互反馈
- 02设计卡片与输入框的状态变化
- 03为页面和覆盖层安排转场
- 04统一界面动效的层级与节奏
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ dylantarre/ animation-principles --skill universal-elements安装后在 Claude Code 中输入/universal-elements确认已加载。
详细介绍
通用元素动画原则
将 Disney 的 12 条原则应用于任何 UI 元素,打造一致、专业的动效设计。
原则的通用应用
1. 挤压与拉伸
任何响应交互的元素都可以挤压(受击或按压时收缩)和拉伸(释放时延展)。幅度应保持细微:UI 中最大为 2-5%。
2. 预备动作
任何重要动作发生前,都应以短暂的预备动作提示接下来的变化。放大前先缩小,前推前先回拉。持续时间为 50-100ms。
3. 演出布局
将注意力引导到最重要的元素。通过动作、尺寸、颜色、z-index 和模糊效果的对比,建立清晰的视觉层级。
4. 逐帧动画与关键姿势动画
大多数 UI 适合使用关键姿势动画:清晰定义起始和结束状态。粒子或有机形状等自然流畅的动画则适合使用逐帧动画。
5. 跟随动作与重叠动作
所有元素不会同时停止。子元素会稍晚于父元素停止。阴影会在物体停止后才稳定下来。相关元素之间的动画错开 20-50ms。
6. 缓入与缓出
黄金法则:UI 动效绝不使用 linear。进入时使用 ease-out,退出时使用 ease-in,过渡时使用 ease-in-out。
7. 弧线运动
自然运动遵循曲线路径。水平过渡时加入细微的垂直移动。平移时同时旋转。避免机械的直线运动。
8. 次要动作
每个主要动作都值得搭配辅助动画。阴影变化、颜色变化、图标旋转和发光效果可以强化动作,但不会喧宾夺主。
9. 时长
| 元素类型 | 快速 | 正常 | 缓慢 |
|---|---|---|---|
| 微小元素(图标、按钮) | 50-100ms | 100-200ms | 200-300ms |
| 小型元素(卡片、输入框) | 150-200ms | 200-300ms | 300-400ms |
| 中型元素(模态框、菜单) | 200-250ms | 250-350ms | 350-500ms |
| 大型元素(页面、叠加层) | 300-400ms | 400-600ms | 600-800ms |
10. 夸张
让动画强度与具体情境相匹配。庆祝时刻可以夸张 20-30%。专业场景中应控制在 10% 以内。错误状态可以表现得更强烈。
11. 扎实绘制
保持视觉一致性:圆角比例、阴影方向、间距节奏和字体大小比例。动画过程中不应出现变形或错乱。
12. 吸引力
目标是带来愉悦感,而不造成干扰。流畅的动画能够建立信任。干脆的反馈让交互更灵敏。最好的动画能让人感受到,却不会引人注意。
CSS 基础
/* Universal transition base */
* {
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
/* Standard durations as custom properties */
:root {
--duration-fast: 100ms;
--duration-normal: 200ms;
--duration-slow: 350ms;
--ease-out: cubic-bezier(0.0, 0, 0.2, 1);
--ease-in: cubic-bezier(0.4, 0, 1, 1);
--ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
--ease-bounce: cubic-bezier(0.68, -0.55, 0.27, 1.55);
}
/* Apply to any interactive element */
.interactive {
transition: transform var(--duration-normal) var(--ease-standard),
opacity var(--duration-normal) var(--ease-standard),
box-shadow var(--duration-normal) var(--ease-standard);
}
关键属性(适用于任何元素)
transform:通用定位和缩放opacity:可见性过渡transition:状态变化animation:复杂动画序列box-shadow:深度和强调