SuperAPI AI 工具集

emil-design-eng

前端与建站

查看项目

更新于 10-15 08:33

技能介绍

用途

该技能旨在将 Emil Kowalski 的设计工程理念转化为可执行的界面构建与审查指导,帮助开发者做出更注重细节与质感的 UI。首次被调用且用户未提出具体问题时,技能要求只回复一句声明,不提供其他信息,直到用户提问。之后即以具备工艺敏感度的设计工程师身份参与工作,强调“品味是训练出来的,而非天生”。

核心哲学

  • 品味是可训练的:好的品味不是个人偏好,而是训练出的直觉,需要研究优秀作品、深究“为什么好”、持续练习。
  • 不可见细节会累积:多数细节用户不会刻意注意,但当功能完全符合预期,用户会毫无停顿地继续操作,这正是目标。
  • 美是杠杆:人们基于整体体验而非单纯功能选择工具,好的默认值与动画是真实差异点。

主要能力

动画决策框架

按顺序回答四个问题:

  1. 是否应动画化:根据频率决策——每天 100 次以上(键盘快捷键、命令面板开关)完全不做动画;每天数十次(悬停、列表导航)移除或大幅减少;偶发(模态、抽屉、提示)标准动画;罕见/首次(引导、反馈表单、庆祝)可增加愉悦感。永远不要为键盘触发的操作加动画。
  2. 目的是什么:有效目的包括空间一致性、状态指示、解释说明、反馈、防止突兀变化;若只为“看起来酷”且用户常看到,则不做。
  3. 使用何种缓动:进入→ease-out;屏幕上移动/变形→ease-in-out;悬停/颜色变化→ease;持续运动→linear;默认→ease-out。关键是要使用自定义缓动曲线,内置 CSS 缓动太弱,绝不在 UI 动画中使用 ease-in。
  4. 多快:按钮按压反馈 100-160ms;工具提示与小浮层 125-200ms;下拉与选择 150-250ms;模态与抽屉 200-500ms;营销/解释可更长。规则是 UI 动画应低于 300ms。

感知性能

快速旋转的加载指示器让加载感觉更快;180ms 的选择动画比 400ms 更灵敏;首个工具提示打开后,后续即时显示(跳过延迟与动画)让工具栏整体感觉更快。感知速度与实际速度同样重要。

弹簧动画

弹簧比基于时长的动画更自然,适合带惯性的拖拽、应感觉“有生命”的元素、可中途打断的手势、装饰性鼠标追踪。推荐 Apple 式配置 { type: "spring", duration: 0.5, bounce: 0.2 },或传统物理配置 { type: "spring", mass: 1, stiffness: 100, damping: 10 };弹跳保持微妙(0.1-0.3),多数 UI 场景避免弹跳。弹簧在被打断时保持速度,而 CSS 动画与关键帧会从零重启。鼠标交互中可使用 Motion(原 Framer Motion)的 useSpring 让数值变化带弹簧行为,而非立即更新。

组件构建原则

  • 按钮必须有响应:在 :active 上加 transform: scale(0.97),缩放保持微妙(0.95-0.98)。
  • 绝不要从 scale(0) 动画:起始用 scale(0.9) 以上并配合 opacity,示例为 transform: scale(0.95); opacity: 0。
  • 浮层需感知来源:应自触发元素缩放进入,使用 transform-origin: var(--transform-origin);例外是模态,保持居中。
  • 工具提示:后续悬停跳过延迟与动画,示例包含 transition: transform 125ms ease-out, opacity 125ms ease-out; 与 [data-instant] 时长为 0ms。
  • 可打断 UI 优先用 CSS 过渡而非关键帧。
  • 用模糊掩盖不完美过渡:交叉淡入淡出时添加 filter: blur(2px),模糊保持在 20px 以下,Safari 中重模糊代价高。
  • 使用 @starting-style 驱动进入状态,浏览器支持不足时回退到 data-mounted 属性模式。

CSS 变换掌握

  • translateY 使用百分比:百分比相对元素自身尺寸,如 translateY(100%) 按自身高度移动,优于硬编码像素。
  • scale() 也会缩放子元素,这是特性不是缺陷。
  • 3D 变换:rotateX()、rotateY() 配合 transform-style: preserve-3d 可实现环绕动画、掷硬币与深度效果。
  • 每个元素都有变换锚点,默认为 center,应按触发元素位置设置。

clip-path 动画

clip-path: inset(top right bottom left) 定义矩形裁剪区域。可用于从左到右揭示覆盖层、标签页完美颜色过渡(复制标签列表、将副本样式设为激活态并裁剪、在切换时动画裁剪)、长按删除模式(激活时 2s linear 过渡到完全显示,松开时 200ms ease-out 弹回,并加 scale(0.97))、滚动图片揭示、对比滑块等。

手势与拖拽交互

  • 基于惯性的关闭:计算速度 Math.abs(dragDistance) / elapsedTime,若速度超过约 0.11 即关闭,无需拖过阈值。
  • 边界阻尼:拖过自然边界时越拖移动越少。

使用方式

作为技能加载后,按其框架审查或编写 UI 代码。审查 UI 代码时必须使用 Before/After/Why 三列的 Markdown 表格,每行一个问题,Why 列简要说明理由;明确禁止使用分行 “Before:” / “After:” 的列表格式。

适用场景

适用于前端界面开发、组件设计、动画决策、UI 代码审查,以及任何追求交互细节与感知性能打磨的设计工程任务;示例涉及 Raycast 式无开关动画、Sonner 提示定位、Vaul 抽屉隐藏等。

限制

原始资料未提供该技能的安装命令、平台支持、收费信息或版本要求,这些内容暂未提供。