ui-designer/interaction-specification

SkillDev tools

Interaction specification: defines interaction details such as loading states, empty states, feedback mechanisms, animations, and accessibility

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the ui-designer/interaction-specification skill

What this skill tells your AI

The instructions your AI receives, as published by echovic/boss-skill in skill/skills/ui-designer/interaction-specification/SKILL.md and read by ahel’s review.

适用场景

定义用户与界面交互的细节,包括加载状态、空状态、反馈机制、动效、无障碍等,确保交互流畅、友好、可访问。

交互设计原则

  1. 及时反馈:用户操作后立即给予反馈
  2. 清晰引导:明确告诉用户下一步该做什么
  3. 容错性:允许用户撤销、修改操作
  4. 一致性:相同操作在不同场景下行为一致
  5. 可访问性:支持键盘、屏幕阅读器等辅助技术

交互规范

1. 加载状态

加载场景
场景处理方式时机视觉表现
页面首次加载骨架屏首次进入页面灰色占位块,模拟内容结构
页面刷新顶部进度条刷新页面蓝色进度条,从左到右
按钮提交按钮内 spinner点击提交按钮后按钮内显示旋转图标,文字隐藏
列表加载更多底部 spinner滚动到底部底部显示"加载中..."
局部刷新区域内 spinner刷新某个区域区域内显示旋转图标
搜索输入框内 spinner输入后延迟搜索输入框右侧显示旋转图标
骨架屏设计
┌─────────────────────────────────────┐
│  ████████                            │  ← 标题占位
│  ████████████                        │  ← 描述占位
│                                     │
│  ████  ████████████████              │  ← 列表项占位
│  ████  ████████████████              │
│  ████  ████████████████              │
└─────────────────────────────────────┘

骨架屏原则

  • 模拟真实内容的结构和布局
  • 使用灰色占位块(Gray-200)
  • 添加微妙的动画(shimmer效果)
  • 不要显示真实数据的占位符
Spinner设计
尺寸大小线宽用途
sm16px2px按钮内、输入框内
md24px2.5px卡片内、区域内
lg32px3px页面级加载

颜色

  • 主色(Primary):主要操作的加载
  • 灰色(Gray-400):次要操作的加载
  • 白色(White):深色背景上的加载

2. 空状态

空状态场景
场景展示内容操作引导
无数据插图 + "暂无数据""创建第一个项目" 按钮
搜索无结果插图 + "未找到相关内容""尝试其他关键词" 提示
网络错误插图 + "网络连接失败""重试" 按钮
权限不足插图 + "无权访问""返回首页" 按钮
404页面插图 + "页面不存在""返回首页" 按钮
空状态设计
┌─────────────────────────────────────┐
│                                     │
│           [插图/图标]                │
│                                     │
│           暂无数据                   │
│      您还没有创建任何项目            │
│                                     │
│        [创建项目] 按钮               │
│                                     │
└─────────────────────────────────────┘

空状态原则

  • 使用友好的插图或图标
  • 说明为什么是空的
  • 提供明确的操作引导
  • 不要让用户感到困惑或沮丧

3. 反馈机制

Toast通知
类型颜色图标持续时间位置
SuccessSuccess3秒顶部居中
WarningWarning4秒顶部居中
ErrorError5秒顶部居中
InfoInfo3秒顶部居中

Toast设计

┌─────────────────────────────────────┐
│  [图标]  操作成功                    │
└─────────────────────────────────────┘
  • 背景:对应语义色
  • 文字:白色
  • 圆角:radius-md
  • 阴影:shadow-lg
  • 最大宽度:400px
  • 可手动关闭(右侧×按钮)
Modal确认框
类型用途按钮
确认危险操作(删除、清空)"取消" + "确认"
警告重要提示"我知道了"
信息详细说明"关闭"

Modal设计

┌─────────────────────────────────────┐
│  标题                          [×]   │
├─────────────────────────────────────┤
│                                     │
│  内容区域                            │
│                                     │
├─────────────────────────────────────┤
│              [取消]  [确认]          │
└─────────────────────────────────────┘
  • 背景:White
  • 圆角:radius-xl
  • 阴影:shadow-2xl
  • 最大宽度:480px
  • 遮罩:rgba(0,0,0,0.5)
表单验证
时机验证方式反馈位置
输入时实时验证(延迟300ms)输入框下方
失焦时立即验证输入框下方
提交时全部验证输入框下方 + Toast

错误提示

  • 颜色:Error
  • 字号:14px
  • 图标:✕
  • 位置:输入框下方,space-2间距

4. 动效规范

页面过渡
场景动效参数
页面进入淡入300ms ease-out, opacity 0→1
页面退出淡出200ms ease-in, opacity 1→0
路由切换淡入淡出250ms ease-in-out
弹窗动效
场景动效参数
Modal出现淡入 + 缩放250ms ease-out, scale 0.95→1, opacity 0→1
Modal消失淡出 + 缩放200ms ease-in, scale 1→0.95, opacity 1→0
Drawer出现滑入300ms ease-out, translateX -100%→0
Drawer消失滑出250ms ease-in, translateX 0→-100%
微交互
场景动效参数
按钮悬停背景色渐变150ms ease-out
按钮按下缩放100ms ease-out, scale 0.98
卡片悬停阴影加深200ms ease-out
展开收起高度动画250ms ease-in-out
淡入淡出透明度200ms ease-in-out

动效原则

  • 动效要有意义,不要为了炫技
  • 保持克制,不要过度动画
  • 微交互要快(150ms),大动画可以慢(300ms)
  • 提供关闭动画的选项(尊重用户偏好)

5. 无障碍设计

颜色对比度
组合对比度是否合规(WCAG AA)
Gray-900 / White16.1:1
Gray-700 / White9.5:1
Gray-500 / White4.6:1
Primary / White需计算需≥4.5:1

对比度要求

  • 正文文字:≥4.5:1(WCAG AA)
  • 大文字(18px+):≥3:1(WCAG AA)
  • 图标、UI组件:≥3:1
键盘导航
按键功能
Tab移动到下一个可聚焦元素
Shift + Tab移动到上一个可聚焦元素
Enter激活按钮、链接、提交表单
Space切换复选框、单选框、开关
Escape关闭弹窗、下拉菜单、取消操作
方向键在列表、菜单、选项卡中导航
Home / End跳到列表开头/结尾

聚焦指示

  • 所有可交互元素必须有明显的聚焦状态
  • 聚焦样式:2px Primary 外发光
  • 不要移除默认的 outline
屏幕阅读器
元素ARIA 属性说明
按钮aria-label图标按钮必须有文字说明
输入框aria-label 或关联 <label>说明输入框用途
加载状态aria-busy="true"告知正在加载
错误提示aria-live="polite"实时播报错误
弹窗role="dialog", aria-modal="true"标识为对话框
导航role="navigation", aria-label标识导航区域
触控目标
设备最小尺寸推荐尺寸
移动端44x44px48x48px
桌面端32x32px40x40px

触控原则

  • 按钮、链接等可点击元素要足够大
  • 相邻元素之间要有足够间距(至少8px)
  • 移动端优先考虑拇指可达区域

6. 响应式交互

断点调整
断点交互调整
< 640px (mobile)全屏弹窗、底部抽屉、大触控目标
640-1024px (tablet)侧边抽屉、适中触控目标
> 1024px (desktop)居中弹窗、悬停效果、小触控目标
移动端特殊交互
交互说明
下拉刷新列表顶部下拉触发刷新
滑动删除列表项左滑显示删除按钮
长按长按触发上下文菜单
双击双击放大图片
捏合缩放图片、地图支持捏合缩放

输出要求

在UI设计文档中,应包含以下交互规范章节:

## 7. 交互规范

### 7.1 加载状态
[加载场景表格]

### 7.2 空状态
[空状态场景表格]

### 7.3 反馈机制
[Toast、Modal、表单验证规范]

### 7.4 动效规范
[页面过渡、弹窗动效、微交互表格]

### 7.5 无障碍设计
[颜色对比度、键盘导航、屏幕阅读器、触控目标]

关键原则

  1. 及时反馈:用户操作后立即给予反馈
  2. 清晰引导:明确告诉用户下一步该做什么
  3. 容错性:允许用户撤销、修改操作
  4. 可访问性:支持键盘、屏幕阅读器等辅助技术

常见误区

无加载提示:操作后没有任何反馈,用户不知道是否成功 ❌ 空状态不友好:只显示"无数据",没有引导用户下一步 ❌ 过度动画:所有元素都加动画,影响性能和体验 ❌ 忽略无障碍:不支持键盘导航,颜色对比度不足

Signals

GitHub stars
555
Forks
50
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
ui-designer-interaction-specification
Source
github.com/echovic/boss-skill