返回顶部
w

web-animation-design网页动画设计

Design and implement web animations that feel natural and purposeful. Use this skill proactively whenever the user asks questions about animations, motion, easing, timing, duration, springs, transitions, or animation performance. This includes questions about how to animate specific UI elements, which easing to use, animation best practices, or accessibility considerations for motion. Triggers on: easing, ease-out, ease-in, ease-in-out, cubic-bezier, bounce, spring physics, keyframes, transform,

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
398
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

web-animation-design

Web 动画设计

⚠️ 创意包 — 非自动应用

此技能属于创意包的一部分。当任务明确涉及动画、动效或交互感受时使用。不要为一般的 UI 构建加载此技能——设计评审中的动效参考已涵盖基础动效质量。

使用时: 用户询问动画、缓动、弹簧、过渡、交互感受或让它更流畅。
跳过时: 构建标准 UI,且设计评审中的动效参考已足够。

基于 Emil Kowalski 的Web 动画课程,一份关于创建感觉正确的动画的综合指南。

初始响应

当首次调用此技能且没有具体问题时,仅回复:

我已准备好根据 Emil Kowalski 的 animations.dev 课程帮助您处理动画。

在用户提出问题之前,不要提供任何其他信息。

审查格式(必需)

审查动画时,您必须使用 markdown 表格。不要使用带有之前:和之后:的列表形式。始终输出如下所示的实际 markdown 表格:

之前之后
transform: scale(0)transform: scale(0.95)
animation: fadeIn 400ms ease-in
animation: fadeIn 200ms ease-out |
| 无减少动效支持 | @media (prefers-reduced-motion: reduce) {...} |

错误格式(切勿这样做):

之前: transform: scale(0)
之后: transform: scale(0.95)
────────────────────────────
之前: 400ms 持续时间
之后: 200ms

正确格式:一个包含 | 之前 | 之后 | 列的 markdown 表格,每个问题一行。

决策树:我该使用什么工具?

这涉及 React 中的布局变化、共享过渡或退出动画吗?
├── 是 → Framer Motion(布局动画、AnimatePresence、layoutId)
│ 从 motion/react 导入(不是 framer-motion)
└── 否
├── 是简单的进入/退出或悬停? → CSS 过渡/关键帧
├── 对性能要求高(重页面、多元素)? → CSS(硬件加速)
├── 需要弹簧物理或可中断性? → Framer Motion
├── 需要手势跟踪(拖拽、光标跟随)? → FM 动效值
└── 是恒定速度循环? → CSS 关键帧

始终检查 prefers-reduced-motion。没有例外。

快速入门

每个动画决策都从这些问题开始:

  1. 1. 此元素是进入还是退出? → 使用 ease-out
  2. 屏幕上的元素在移动吗? → 使用 ease-in-out
  3. 这是悬停/颜色过渡吗? → 使用 ease
  4. 用户每天会看到这个 100 次以上吗? → 不要动画化

缓动蓝图

ease-out(最常见)

用于用户发起的交互:下拉菜单、模态框、工具提示、任何进入或退出屏幕的元素。

css
/ 从弱到强排序 /
--ease-out-quad: cubic-bezier(0.25, 0.46, 0.45, 0.94);
--ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1);
--ease-out-quart: cubic-bezier(0.165, 0.84, 0.44, 1);
--ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1);
--ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1);
--ease-out-circ: cubic-bezier(0.075, 0.82, 0.165, 1);

为什么有效:开头的加速创造了即时、响应迅速的感觉。元素跳向目标,然后稳定下来。

ease-in-out(用于移动)

屏幕上已有的元素需要移动或变形时使用。模仿自然运动,如汽车加速然后刹车。

css
/ 从弱到强排序 /
--ease-in-out-quad: cubic-bezier(0.455, 0.03, 0.515, 0.955);
--ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1);
--ease-in-out-quart: cubic-bezier(0.77, 0, 0.175, 1);
--ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1);
--ease-in-out-expo: cubic-bezier(1, 0, 0, 1);
--ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.15, 0.86);

ease(用于悬停效果)

用于悬停状态和颜色过渡。不对称曲线(开始快,结束慢)对于温和的动画感觉优雅。

css
transition: background-color 150ms ease;

linear(在 UI 中避免)

仅用于:

  • - 恒定速度动画(跑马灯、滚动条)
  • 时间可视化(按住删除进度指示器)

线性对于交互元素感觉机械且不自然。

ease-in(几乎从不使用)

避免用于 UI 动画。 使界面感觉迟缓,因为缓慢的开始延迟了视觉反馈。

配对元素规则

一起动画的元素必须使用相同的缓动和持续时间。模态框 + 遮罩层、工具提示 + 箭头、抽屉 + 背景——如果它们作为一个单元移动,它们应该感觉像一个单元。

css
/ 两者使用相同的时序 /
.modal {
transition: transform 200ms ease-out;
}
.overlay {
transition: opacity 200ms ease-out;
}

时序和持续时间

持续时间指南

元素类型持续时间
微交互100-150ms
标准 UI(工具提示、下拉菜单)
150-250ms | | 模态框、抽屉 | 200-300ms |

规则:

  • - UI 动画应保持在 300ms 以下
  • 较大的元素比较小的元素动画更慢
  • 退出动画可以比进入动画快约 20%
  • 匹配持续时间与距离 - 更长的行程 = 更长的持续时间

频率

确定用户看到动画的频率:

  • - 每天 100 次以上 → 无动画(或大幅减少)
  • 偶尔使用 → 标准动画
  • 罕见/首次 → 可以更特别

示例: Raycast 从不动画化,因为用户每天打开它数百次。

何时动画化

应该动画化:

  • - 进入/退出过渡以保持空间一致性
  • 受益于视觉连续性的状态变化
  • 对用户操作的响应(反馈)
  • 罕见使用的交互,其中愉悦感增加价值

不应该动画化:

  • - 键盘发起的操作
  • 常用元素上的悬停效果
  • 用户每天交互 100 次以上的任何内容
  • 当速度比流畅更重要时

营销 vs. 产品:

  • - 营销:更精细,允许更长的持续时间
  • 产品:快速、有目的、绝不轻浮

弹簧动画

弹簧感觉更自然,因为它们没有固定的持续时间——它们模拟真实的物理。

何时使用弹簧

  • - 带动量的拖拽交互
  • 应该感觉有生命的元素(灵动岛)
  • 可以在动画中途中断的手势
  • 有机、有趣的界面

配置

Apple 的方法(推荐):

js
// 持续时间 + 弹跳(更容易理解)
{ type: spring, duration: 0.5, bounce: 0.2 }

传统物理:

js
// 质量、刚度、阻尼(更复杂)
{ type: spring, mass: 1, stiffness: 100, damping: 10 }

弹跳指南

  • - 在大多数 UI 上下文中避免弹跳
  • 对拖拽关闭、有趣的交互使用弹跳
  • 使用时保持弹跳微妙(0.1-0.3)

可中断性

弹簧在中断时保持速度——CSS 动画从零重新开始。这使得弹簧非常适合用户可能中途改变方向的手势。

布局动画(Framer Motion)

最强大的 FM 功能。允许动画化 CSS 无法做到的属性:flex-direction、justify-content、位置变化。

layout 属性

向任何 motion.* 元素添加 layout 以自动动画化布局变化: jsx

当此元素的大小或位置发生变化时(由于状态、内容、兄弟元素),FM 平滑地动画化它。无需手动测量。

共享布局动画(layoutId

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 web-animation-design-1776117736 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 web-animation-design-1776117736 技能

通过命令行安装

skillhub install web-animation-design-1776117736

下载

⬇ 下载 web-animation-design v1.0.0(免费)

文件大小: 11.06 KB | 发布时间: 2026-4-14 14:44

v1.0.0 最新 2026-4-14 14:44
Initial release of **web-animation-design** skill for web animation best practices:

- Provides a comprehensive guide for designing purposeful, natural-feeling web animations, based on Emil Kowalski's animations.dev course.
- Includes clear triggers: activates for questions about motion, easing, timing, transitions, performance, or popular animation libraries (CSS, Framer Motion, React Spring, GSAP).
- Enforces accessibility: always check and respect `prefers-reduced-motion`.
- Specifies required review output as a markdown table (not "Before/After" text lists).
- Offers practical decision tree for choosing tools (CSS, Framer Motion, etc.) based on animation type and performance needs.
- Details best practices for duration, easing, and accessibility for different interaction types.
- Covers spring animation usage, configuration, and guidelines for lively or interruptible motion.
- Sets clear scope: only applies when animation or motion is explicitly requested.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部