创新方案
设计或评审 Web/移动 UI 时…
适用于构建、优化或评审 Web/移动界面的导航、表单、数据展示、反馈、响应式与无障碍设计。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
设计或评审 Web/移动 UI 时,用常通用
解决思路
- 采用可复用 UI 模式,保证跨应用一致性、节省时间并利用已验证的可用性。
- 建立设计师和开发者的共享模式词汇,并把无障碍要求纳入模式。
- 构建设计系统:建立可复用组件库。
- 构建设计系统:定义颜色、间距、排版的 design tokens。
- 构建设计系统:编写每个组件的使用指南。
- 构建设计系统:制定 WCAG 合规无障碍标准。
- 构建设计系统:提供代码示例和完整文档。
- 按 Atomic Design 拆分界面:Atoms 为基础构建块,如按钮、输入框、标签。
- 按 Atomic Design 拆分界面:Molecules 为原子的简单组合,如搜索框加按钮。
- 按 Atomic Design 拆分界面:Organisms 为复杂组件,如页头、表单、卡片。
- 按 Atomic Design 拆分界面:Templates 为页面级布局。
- 按 Atomic Design 拆分界面:Pages 为带真实内容的具体实例。
- 标签页:清晰高亮当前激活标签。
- 标签页:保持标签文案简短且具描述性。
- 标签页:切换标签时保持状态。
- 标签页:使用图标加文字提升清晰度。
- 标签页:确保键盘导航可用。
- 标签页:考虑移动端替代方案,如下拉菜单或分段控件。
- 标签页无障碍:使用 ARIA role=tablist、role=tab、role=tabpanel。
- 标签页无障碍:实现方向键导航。
- 标签页无障碍:设置 aria-selected 和 aria-controls。
- 标签页无障碍:确保 tabpanel 可聚焦。
- 手风琴:使用清晰、具描述性的标题。
- 手风琴:提供视觉指示符,如 chevron、+/-。
- 手风琴:考虑默认状态,全部折叠或首项展开。
- 手风琴:平滑动画过渡,200-300ms。
- 手风琴:折叠时保留内容。
- 手风琴:允许键盘控制。
- 手风琴无障碍:标题使用 button 元素。
- 手风琴无障碍:设置 aria-expanded 属性。
- 手风琴无障碍:用 aria-controls 关联标题和面板。
- 手风琴无障碍:确保键盘导航,Enter、Space、方向键。
- 手风琴无障碍:提供正确标题层级。
- 面包屑:清晰显示当前位置。
- 面包屑:让上一级可点击。
- 面包屑:使用合适分隔符,如 >、/、→。
- 面包屑:保持标签简洁。
- 面包屑:考虑移动端截断。
- 面包屑:放在页面顶部。
- 面包屑无障碍:使用 nav 并设置 aria-label=Breadcrumb。
- 面包屑无障碍:用 aria-current=page 标记当前页。
- 面包屑无障碍:提供足够颜色对比度。
- 面包屑无障碍:确保键盘导航。
- 分页:清晰显示当前页。
- 分页:提供 Previous/Next 控件。
- 分页:包含 First/Last 页链接。
- 分页:显示总页数或结果数。
- 分页:跳过页使用省略号,如 1 ... 5 6 7 ... 20。
- 分页:适当保持滚动位置。
- 分页:考虑加载时间和性能。
- 分页无障碍:使用 nav 并设置 aria-label=Pagination。
- 分页无障碍:用 aria-current=page 标记当前页。
- 分页无障碍:正确禁用不可用链接。
- 分页无障碍:为纯图标控件提供文本替代。
- 下拉菜单:优先点击而非悬停,以兼容移动端。
- 下拉菜单:悬停关闭前加小延迟。
- 下拉菜单:用箭头图标指示子菜单。
- 下拉菜单:菜单深度保持浅层,最多 2-3 级。
- 下拉菜单:智能定位避免超出视口。
- Mega 菜单:使用网格布局组织内容。
- Mega 菜单:加入视觉元素,如图标、图片。
- Mega 菜单:分组相关条目。
- Mega 菜单:提供清晰视觉层级。
- Mega 菜单:点击外部或按 Esc 关闭。
- Hamburger 菜单:使用可识别图标,三条横线。
- Hamburger 菜单:提供清晰标签,如 Menu。
- Hamburger 菜单:给打开/关闭加动画。
- Hamburger 菜单:打开时禁用 body 滚动。
- Hamburger 菜单:菜单内包含关闭按钮。
- Hamburger 菜单:考虑替代方案以提升可发现性。
- 菜单无障碍:使用正确 ARIA roles 和 states。
- 菜单无障碍:支持键盘导航。
- 菜单无障碍:向屏幕阅读器播报菜单状态。
- 菜单无障碍:确保焦点管理。
- 输入校验:清晰标记必填字段,如星号、required 标签。
- 输入校验:在字段附近提供行内错误消息。
- 输入校验:使用清晰、有帮助的错误消息。
- 输入校验:适当时显示成功状态。
- 输入校验:将相关错误分组。
- 输入校验:可选地禁用提交直到表单有效。
- 输入校验:显示错误时保留用户输入。
- 输入校验:支持浏览器自动填充。
- 错误消息:具体说明问题。
- 错误消息:说明如何修复。
- 错误消息:使用友好、非技术语言。
- 错误消息:避免责怪用户,例如把 You entered... 改为 Email format invalid。
- 输入校验视觉:错误用红边框/背景。
- 输入校验视觉:成功/有效用绿色。
- 输入校验视觉:用图标强化状态。
- 输入校验视觉:保证足够颜色对比。
- 输入校验无障碍:无效字段使用 aria-invalid=true。
- 输入校验无障碍:用 aria-describedby 关联错误。
- 输入校验无障碍:向屏幕阅读器播报错误。
- 输入校验无障碍:确保错误消息与字段程序化关联。
- 多步表单:每步聚焦单一主题。
- 多步表单:清晰显示进度。
- 多步表单:允许向后导航。
- 多步表单:继续前校验每一步。
- 多步表单:自动保存进度。
- 多步表单:提供跳过可选步骤的方式。
- 多步表单:如可能显示时间估计。
- 多步表单:使用具描述性的步骤标题。
- 进度指示器:使用线性步骤,如 1 → 2 → 3 → 4。
- 进度指示器:使用带数字的步骤标签。
- 进度指示器:显示完成百分比。
- 进度指示器:使用视觉时间线。
- 多步表单无障碍:步骤指示器使用 aria-label。
- 多步表单无障碍:播报步骤变化。
- 多步表单无障碍:确保键盘导航可用。
- 多步表单无障碍:标记已完成/当前/即将进行步骤。
- 行内编辑:为可编辑区域提供清晰视觉反馈。
- 行内编辑:清晰显示编辑模式,如边框、背景变化。
- 行内编辑:包含 Save/Cancel 操作。
- 行内编辑:可选地在失焦时自动保存。
- 行内编辑:保存前校验。
- 行内编辑:保存时显示加载状态。
- 行内编辑:优雅处理错误。
- 行内编辑:提供键盘快捷键,Enter 保存,Esc 取消。
- 行内编辑视觉状态:默认显示内容并暗示可编辑。
- 行内编辑视觉状态:悬停时表示可交互。
- 行内编辑视觉状态:编辑时显示清晰输入/编辑界面。
- 行内编辑视觉状态:保存中显示加载指示。
- 行内编辑视觉状态:保存后短暂显示成功确认。
- 行内编辑无障碍:使用语义 HTML 元素。
- 行内编辑无障碍:提供清晰标签。
- 行内编辑无障碍:播报状态变化。
- 行内编辑无障碍:支持纯键盘交互。
- 自动补全:输入防抖,300ms 延迟。
- 自动补全:高亮匹配字符。
- 自动补全:同时显示最近和相关结果。
- 自动补全:建议数量限制为 5-10 条。
- 自动补全:允许键盘导航,方向键、Enter。
- 自动补全:按 Esc 清除建议。
- 自动补全:显示 No results 状态。
- 自动补全:包含搜索按钮作为后备。
- 自动补全无障碍:使用 role=combobox 和 aria-autocomplete。
- 自动补全无障碍:播报建议数量。
- 自动补全无障碍:用 aria-activedescendant 标记高亮选项。
- 自动补全无障碍:确保屏幕阅读器支持。
- 过滤:清晰显示激活的过滤器。
- 过滤:显示结果数量。
- 过滤:允许清除单个或全部过滤器。
- 过滤:实时更新结果或使用 Apply 按钮。
- 过滤:在 URL 中保留过滤器状态。
- 过滤:为常见查询提供过滤器预设。
- 表单布局:移动端和简单场景优先使用单列布局。
- 多列表单布局:保持相关字段在一起。
- 多列表单布局:标签左对齐。
- 多列表单布局:仅用于短表单。
- 多列表单布局:移动端堆叠排列。
- 标签定位:顶部标签完成最快,最适合移动端。
- 标签定位:左侧标签节省空间,适合数据录入。
- 标签定位:内联标签采用占位符样式,谨慎使用。
- 表格:点击表头排序。
- 表格:支持按列搜索或过滤。
- 表格:用分页处理大数据集。
- 表格:用复选框支持行选择和批量操作。
- 表格:适配移动端屏幕。
- 表格:支持拖拽调整列宽。
- 表格:支持列重新排序。
- 表格:冻结表头/首列保持可见。
- 表格:支持展开行显示额外详情。
- 表格:支持直接编辑单元格。
- 表格:支持导出 CSV/Excel。
- 表格:文本左对齐,数字右对齐。
- 表格:使用一致格式。
- 表格:悬停时高亮行。
- 表格:显示加载状态。
- 表格:处理空状态。
- 表格:提供清晰排序指示。
- 表格:谨慎使用斑马纹。
- 表格:尽可能避免水平滚动。
- 响应式表格:可用水平滚动,但不太理想。
- 响应式表格:将行转换为卡片视图。
- 响应式表格:隐藏优先级较低的列。
- 响应式表格:用可展开行隐藏详情直到展开。
- 响应式表格:用对比视图并排显示 2-3 项。
- 表格无障碍:使用语义 table、thead、tbody、th、td。
- 表格无障碍:给表头添加 scope 属性。
- 表格无障碍:提供表格 caption。
- 表格无障碍:可排序列使用 aria-sort。
- 表格无障碍:确保交互元素键盘可导航。
- 卡片:网格中卡片尺寸一致。
- 卡片:建立清晰视觉层级。
- 卡片:提供足够内边距和间距。
- 卡片:可交互时提供悬停状态。
- 卡片:操作限制为 1-2 个主要操作。
- 卡片:用轻微阴影表达深度。
- 卡片:确保触控目标足够大,最小 44x44px。
- 卡片网格:响应式列数,移动端 1 列,桌面 2-4 列。
- 卡片网格:等高铁或 masonry 布局。
- 卡片网格:卡片间距一致。
- 卡片无障碍:使用语义 HTML。
- 卡片无障碍:为图片提供 alt 文本。
- 卡片无障碍:确保足够对比度。
- 卡片无障碍:适当时让整张卡片可点击。
- 卡片无障碍:标题使用 heading 标签。
- 列表:条目之间有清晰视觉分隔。
- 列表:条目高度一致或自然流动。
- 列表:显示条目数量。
- 列表:高亮选中条目。
- 列表:提供快速操作。
- 列表:适当时支持多选。
- 列表:长列表实现虚拟滚动。
- 列表无障碍:使用语义列表元素 ul、ol、li。
- 列表无障碍:为条目提供唯一 ID。
- 列表无障碍:播报选择变化。
- 列表无障碍:支持键盘导航。
- 网格:使用 CSS Grid 或 Flexbox。
- 网格:保持宽高比。
- 网格:图片实现懒加载。
- 网格:提供网格/列表视图切换。
- 网格:间距一致。
- 网格:处理空状态。
- 响应式网格:移动端 1-2 列。
- 响应式网格:平板 2-4 列。
- 响应式网格:桌面 4-6 列。
- Dashboard:优先展示最重要指标。
- Dashboard:使用一致时间范围。
- Dashboard:提供上下文,如对比、趋势。
- Dashboard:支持下钻查看详情。
- Dashboard:实时更新数据或显示最后更新时间。
- Dashboard:支持自定义。
- Dashboard:支持导出/分享。
- Toast/Snackbar:显示 3-7 秒。
- Toast/Snackbar:位置一致,底部居中或右上。
- Toast/Snackbar:一次一个,或队列显示多个。
- Toast/Snackbar:提供关闭操作。
- Toast/Snackbar:避免遮挡重要内容。
- Toast/Snackbar:消息简洁。
- Toast/Snackbar:使用合适颜色,成功绿、错误红、信息蓝。
- Toast/Snackbar:破坏性操作提供撤销。
- Toast 无障碍:使用 role=status 或 role=alert。
- Toast 无障碍:向屏幕阅读器播报。
- Toast 无障碍:不要自动关闭太快。
- Toast 无障碍:提供手动关闭选项。
- Modal/Dialog:用遮罩使背景变暗。
- Modal/Dialog:禁用背景交互。
- Modal/Dialog:提供清晰关闭方式,X 按钮、Cancel、Esc 键。
- Modal/Dialog:打开时聚焦第一个输入或关闭按钮。
- Modal/Dialog:关闭时焦点返回触发元素。
- Modal/Dialog:内容简洁。
- Modal/Dialog:在视口中心定位。
- Modal/Dialog:打开时阻止 body 滚动。
- Modal/Dialog:避免模态框套模态框。
- Modal 无障碍:使用 role=dialog 或 role=alertdialog。
- Modal 无障碍:设置 aria-modal=true。
- Modal 无障碍:使用 aria-labelledby 和 aria-describedby。
- Modal 无障碍:实现焦点陷阱。
- Modal 无障碍:支持 Esc 关闭。
- Modal 无障碍:向屏幕阅读器播报。
- Loading:立即显示,100ms 内。
- Loading:尽可能显示进度。
- Loading:长时间操作提供预估时间。
- Loading:适当时允许取消。
- Loading:使用骨架屏提升感知性能。
- Loading:避免不必要地阻塞整个 UI。
- Loading:加载时逐步显示部分内容。
- 骨架屏:匹配实际内容布局。
- 骨架屏:使用细微动画。
- 骨架屏:逐步加载内容。
- 骨架屏:保持滚动位置。
- Loading 无障碍:加载期间使用 aria-busy=true。
- Loading 无障碍:播报加载完成。
- Loading 无障碍:为视觉加载器提供文本替代。
- Loading 无障碍:确保键盘用户可取消。
- 空状态:鼓励且有帮助。
- 空状态:提供清晰下一步操作。
- 空状态:根据上下文使用合适语气。
- 空状态:包含相关插图。
- 空状态:让 CTA 显眼。
- 空状态:提供替代方案或建议。
- 空状态无障碍:提供有意义文本。
- 空状态无障碍:确保图片有 alt 文本。
- 空状态无障碍:让 CTA 键盘可访问。
- 通知徽章:位置一致,图标右上角。
- 通知徽章:使用对比色。
- 通知徽章:限制数字,大数字显示 99+。
- 通知徽章:查看后清除。
- 通知徽章:不要过度使用。
- 通知徽章:尺寸适当。
- 通知徽章无障碍:包含在可访问名称中。
- 通知徽章无障碍:向屏幕阅读器播报更新。
- 通知徽章无障碍:示例 aria-label=Messages (3 unread)。
- 拖放:提供清晰拖拽手柄。
- 拖放:清晰显示放置区。
- 拖放:平滑动画过渡。
- 拖放:支持键盘替代方案。
- 拖放:确认破坏性放置。
- 拖放:靠近边缘拖拽时自动滚动。
- 拖放:显示最终状态预览。
- 拖放键盘替代:选择条目。
- 拖放键盘替代:剪切/复制。
- 拖放键盘替代:导航到目标。
- 拖放键盘替代:粘贴/插入。
- 拖放无障碍:实现键盘控制。
- 拖放无障碍:播报拖放操作。
- 拖放无障碍:提供替代交互方式。
- 拖放无障碍:使用合适 ARIA 属性。
- 无限滚动:显示加载指示器。
- 无限滚动:提供 Load More 按钮作为后备。
- 无限滚动:返回导航时保持滚动位置。
- 无限滚动:仅在所有内容加载后显示 footer。
- 无限滚动:允许跳转到特定条目。
- 无限滚动:尽可能显示总数。
- 无限滚动:提供停止自动加载的方式。
- 无限滚动无障碍:向屏幕阅读器播报新内容。
- 无限滚动无障碍:确保键盘用户可访问所有内容。
- 无限滚动无障碍:提供 skip links。
- 无限滚动无障碍:考虑分页替代方案。
- 无限滚动性能:大列表实现虚拟滚动。
- 无限滚动性能:图片懒加载。
- 无限滚动性能:移除屏幕外内容。
- 无限滚动性能:防抖滚动事件。
- 过滤和排序:清晰显示激活过滤器。
- 过滤和排序:显示结果数量。
- 过滤和排序:允许清除单个过滤器。
- 过滤和排序:提供 Clear All 选项。
- 过滤和排序:立即更新结果或使用 Apply 按钮。
- 过滤和排序:在 URL 中保留过滤器状态。
- 过滤和排序:默认使用最有用的排序。
- 过滤和排序:清晰显示排序方向。
- 移动端过滤:使用 bottom sheet 或 sidebar。
- 移动端过滤:提供带数量徽章的过滤按钮。
- 移动端过滤:允许关闭面板前应用过滤器。
- 搜索:让搜索显眼且容易找到。
- 搜索:显示搜索图标。
- 搜索:提供键盘快捷键,/、Ctrl+K。
- 搜索:搜索范围受限时显示范围。
- 搜索:在结果中高亮匹配词。
- 搜索:显示带建议的 No results 状态。
- 搜索:在 URL 中保留搜索词。
- 搜索:实现防抖,300ms。
- 搜索 UX:选择即时搜索或提交按钮。
- 搜索 UX:提供自动补全建议。
- 搜索 UX:为拼写错误提供模糊匹配。
- 搜索 UX:支持在结果内搜索。
- 搜索 UX:按相关性排序。
- Undo/Redo:为所有重要操作提供撤销。
- Undo/Redo:立即显示撤销选项,toast。
- Undo/Redo:设置合理时间限制,5-10 秒。
- Undo/Redo:清晰说明将撤销什么。
- Undo/Redo:支持多级撤销。
- Undo/Redo:没有可撤销操作时禁用。
- Undo/Redo:适当持久化撤销历史。
- Undo/Redo 实现:使用 immediate undo,toast 带撤销按钮。
- Undo/Redo 实现:使用 command pattern 维护可逆操作栈。
- Undo/Redo 实现:提供键盘快捷键 Ctrl+Z、Ctrl+Y/Ctrl+Shift+Z。
- Undo/Redo 实现:在 Edit 菜单提供选项。
- WCAG Perceivable:为非文本内容提供文本替代。
- WCAG Perceivable:为多媒体提供字幕和替代。
- WCAG Perceivable:创建可用不同方式呈现的内容。
- WCAG Perceivable:让内容更容易看到和听到。
- WCAG Operable:让所有功能键盘可访问。
- WCAG Operable:给用户足够时间阅读和使用内容。
- WCAG Operable:不要设计可能引发癫痫的内容。
- WCAG Operable:帮助用户导航和查找内容。
- WCAG Understandable:让文本可读易懂。
- WCAG Understandable:让内容以可预测方式呈现和操作。
- WCAG Understandable:帮助用户避免和纠正错误。
- WCAG Robust:最大化与当前和未来工具的兼容性。
- 键盘:Tab 向前移动交互元素。
- 键盘:Shift+Tab 向后移动。
- 键盘:Enter/Space 激活按钮和链接。
- 键盘:方向键在组件内导航,如菜单、标签页。
- 键盘:Esc 关闭对话框、取消操作。
- 键盘:Home/End 跳到第一/最后一个条目。
- 焦点管理:使用可见焦点指示,如 outline、highlight。
- 焦点管理:保持逻辑 Tab 顺序遵循视觉顺序。
- 焦点管理:模态框内使用焦点陷阱。
- 焦点管理:关闭对话框后返回焦点。
- 焦点管理:为主内容提供 skip links。
- 键盘最佳实践:不要依赖仅悬停交互。
- 键盘最佳实践:确保所有交互元素键盘可访问。
- 键盘最佳实践:为常用操作提供键盘快捷键。
- 键盘最佳实践:记录键盘快捷键。
- 键盘最佳实践:仅用键盘测试。
- ARIA:使用 roles 定义元素是什么或做什么。
- ARIA:使用 role=button、role=tab、role=dialog。
- ARIA:使用 role=navigation、role=main、role=search。
- ARIA:使用 role=alert、role=status、role=log。
- ARIA:用 aria-expanded 表示可展开元素。
- ARIA:用 aria-selected 表示选中项。
- ARIA:用 aria-checked 表示复选框,true/false/mixed。
- ARIA:用 aria-disabled 表示禁用状态。
- ARIA:用 aria-hidden 从屏幕阅读器隐藏。
- ARIA:用 aria-label 提供可访问名称。
- ARIA:用 aria-labelledby 引用标签元素。
- ARIA:用 aria-describedby 引用描述。
- ARIA:用 aria-live 播报动态变化,polite/assertive。
- ARIA:用 aria-current 标记集合中的当前项,page/step/location。
- ARIA 最佳实践:优先使用语义 HTML。
- ARIA 最佳实践:语义 HTML 不足时再添加 ARIA。
- ARIA 最佳实践:不要覆盖原生语义。
- ARIA 最佳实践:保持 ARIA 属性与 UI 状态同步。
- ARIA 最佳实践:用屏幕阅读器测试。
- 屏幕阅读器:使用逻辑标题层级,h1、h2、h3。
- 屏幕阅读器:使用具描述性的链接文本,避免 click here。
- 屏幕阅读器:为图片提供 alt 文本。
- 屏幕阅读器:为表单输入提供标签。
- 屏幕阅读器:错误消息与输入关联。
- 屏幕阅读器:播报动态内容变化。
- 屏幕阅读器:为视觉信息提供文本替代。
- 屏幕阅读器:用 NVDA、JAWS、VoiceOver、TalkBack 等测试。
- 颜色对比:普通文本对比度 4.5:1,大文本 3:1,WCAG AA。
- 颜色对比:增强对比度普通文本 7:1,大文本 4.5:1,WCAG AAA。
- 颜色对比:UI 组件和图形对比度 3:1。
- 颜色最佳实践:不要只靠颜色传达信息。
- 颜色最佳实践:除颜色外使用图案、图标或文本。
- 颜色最佳实践:用色盲模拟器测试。
- 颜色最佳实践:提供高对比模式。
- 颜色最佳实践:确保焦点指示有足够对比度。
- 表单无障碍:用 for/id 关联 label 和输入。
- 表单无障碍:不要只用 placeholder 作为标签。
- 表单无障碍:用 fieldset 和 legend 分组相关输入。
- 表单无障碍:用 aria-describedby 关联错误与字段。
- 表单无障碍:用 aria-invalid=true 标记无效字段。
- 表单无障碍:用 role=alert 向屏幕阅读器播报错误。
- 表单无障碍:不要只靠颜色表示校验状态。
- 表单说明:在表单前提供清晰说明。
- 表单说明:指出必填字段。
- 表单说明:显示格式要求。
- 表单说明:提供示例输入。
- 移动优先:先为移动屏幕设计,再增强到更大屏幕。
- 断点:移动端 320px-767px 默认。
- 断点:平板 768px+ 使用 @media (min-width: 768px)。
- 断点:桌面 1024px+ 使用 @media (min-width: 1024px)。
- 断点:大桌面 1440px+ 使用 @media (min-width: 1440px)。
- 自适应布局:使用百分比或灵活单位,如 fr、%。
- 自适应布局:使用 CSS Grid 和 Flexbox。
- 自适应布局:使用 container queries 做组件级响应式。
- 灵活图片:设置 img { max-width: 100%; height: auto; }。
- 响应式排版:使用相对单位,如 rem、em。
- 响应式排版:用 clamp() 实现流体排版。
- 响应式排版:调整行宽以利于阅读,45-75 字符。
- 移动导航:Hamburger 图标切换滑出菜单。
- 移动导航:Hamburger 菜单包含标签提升清晰度。
- 移动导航:Tab Bar 固定底部,3-5 个主要分区,始终可见。
- 移动导航:Priority+ 显示能放下的项,把溢出项放入菜单。
- 移动导航:Bottom Sheet 从底部滑出,适合过滤/操作,便于拇指触达。
- 触摸交互:最小 44x44px 点击目标。
- 触摸交互:目标之间留足间距。
- 触摸交互:主要操作使用更大目标。
- 手势:点击作为主要操作。
- 手势:双击缩放,谨慎使用。
- 手势:长按显示上下文菜单。
- 手势:滑动用于删除、归档、导航。
- 手势:捏合缩放。
- 手势:下拉刷新更新内容。
- 触摸最佳实践:为触摸提供视觉反馈。
- 触摸最佳实践:避免依赖悬停的交互。
- 触摸最佳实践:支持竖屏和横屏。
- 触摸最佳实践:考虑拇指区域,易、需伸展、难触达。
- 触摸最佳实践:在真实设备上测试。
- 响应式表格:使用水平滚动。
- 响应式表格:使用优先列。
- 响应式表格:使用堆叠卡片。
- 响应式表格:翻转表头为行标签。
- 响应式表格:使用对比视图。
- 按钮模式:实现主操作按钮,填充、高对比。
- 按钮模式:实现次操作按钮,描边或 ghost。
- 按钮模式:低优先级操作使用三级/文本按钮。
- 按钮模式:常用操作使用图标按钮。
- 按钮模式:相关操作使用按钮组。
- 按钮模式:开关状态使用切换按钮。
- 按钮模式:移动端主操作使用浮动操作按钮 FAB。
- 按钮模式:按钮内提供加载状态。
- 按钮模式:禁用状态使用降低透明度。
- 输入模式:带标签和占位符的文本输入。
- 输入模式:密码输入带显示/隐藏切换。
- 输入模式:搜索输入带图标和清除按钮。
- 输入模式:多行输入使用 textarea。
- 输入模式:从选项中选择使用 Select/dropdown。
- 输入模式:从少数选项单选使用 radio buttons。
- 输入模式:多选使用 checkboxes。
- 输入模式:开关设置使用 toggle switch。
- 输入模式:日期选择使用 date picker。
- 输入模式:文件上传支持拖放。
- 输入模式:数字输入使用 range slider。
- 输入模式:颜色选择使用 color picker。
- 导航模式:实现顶部导航栏。
- 导航模式:实现侧边栏导航。
- 导航模式:实现面包屑导航。
- 导航模式:实现分页。
- 导航模式:实现标签页。
- 导航模式:多步流程使用 stepper。
- 导航模式:页内导航使用锚点链接。
- 导航模式:实现返回顶部按钮。
- 覆盖层模式:实现模态对话框。
- 覆盖层模式:实现 slideover/drawer。
- 覆盖层模式:实现用于上下文信息的 popover。
- 覆盖层模式:实现提示 tooltip。
- 覆盖层模式:实现下拉菜单。
- 覆盖层模式:实现右键上下文菜单。
- 覆盖层模式:移动端实现 bottom sheet。
- 反馈模式:实现 toast 通知。
- 反馈模式:实现 alert banners。
- 反馈模式:实现行内消息。
- 反馈模式:实现加载 spinner。
- 反馈模式:实现进度条。
- 反馈模式:实现骨架屏。
- 反馈模式:实现成功/错误状态。
- 反馈模式:实现空状态。
- 内容模式:实现卡片布局。
- 内容模式:实现列表视图。
- 内容模式:实现网格布局。
- 内容模式:实现表格展示。
- 内容模式:实现时间线/活动流。
- 内容模式:实现 hero 区块。
- 内容模式:实现图片画廊。
- 内容模式:实现轮播/slider。
- 内容模式:实现视频播放器。
- 内容模式:实现头像/个人图片。
- 颜色 tokens:定义 primary-50 到 primary-900 色阶。
- 颜色 tokens:定义语义色 success、warning、error、info。
- 颜色 tokens:定义中性色 gray-50 到 gray-900。
- 颜色 tokens:定义文本色 text-primary、text-secondary、text-disabled。
- 间距 tokens:定义 spacing-xs=4px、sm=8px、md=16px、lg=24px、xl=32px、2xl=48px。
- 排版 tokens:定义字号 text-xs=12px、sm=14px、base=16px、lg=18px、xl=20px、2xl=24px。
- 排版 tokens:定义字重 normal=400、medium=500、semibold=600、bold=700。
- 排版 tokens:定义行高 tight=1.25、normal=1.5、relaxed=1.75。
- 圆角 tokens:定义 rounded-none=0、sm=2px、rounded=4px、md=6px、lg=8px、xl=12px、full=9999px。
- 阴影 tokens:定义 shadow-sm、shadow、shadow-md、shadow-lg、shadow-xl。
- 感知性能:立即显示内容,使用骨架屏。
- 感知性能:渐进式加载。
- 感知性能:乐观 UI 更新。
- 感知性能:平滑动画,60fps。
- 实际性能:代码分割。
- 实际性能:懒加载图片和组件。
- 实际性能:长列表虚拟滚动。
- 实际性能:防抖和节流。
- 实际性能:缓存策略。
- 实际性能:最小化 reflow 和 repaint。
- 图片优化:使用合适格式,WebP、AVIF。
- 图片优化:响应式图片,srcset。
- 图片优化:懒加载。
- 图片优化:模糊占位技术。
- 图片优化:正确尺寸和压缩。
- 可用性测试:用户访谈。
- 可用性测试:任务完成测试。
- 可用性测试:A/B 测试。
- 可用性测试:热图和点击跟踪。
- 可用性测试:会话录制。
- 无障碍测试:键盘导航测试。
- 无障碍测试:屏幕阅读器测试。
- 无障碍测试:颜色对比检查。
- 无障碍测试:自动化无障碍审计,axe、Lighthouse。
- 无障碍测试:手动 WCAG 合规审查。
- 跨浏览器测试:在主要浏览器测试,Chrome、Firefox、Safari、Edge。
- 跨浏览器测试:在真实设备测试。
- 跨浏览器测试:用浏览器 dev tools 做响应式测试。
- 跨浏览器测试:检查渐进增强。
- 性能测试:Lighthouse 审计。
- 性能测试:Core Web Vitals。
- 性能测试:加载时间测试。
- 性能测试:交互延迟。
- 性能测试:动画帧率。
- 参考设计系统:Material Design、Human Interface Guidelines、Fluent Design、Polaris、Carbon、Ant Design、Atlassian Design System。
- 参考组件库:Shadcn UI、Radix UI、Headless UI、Chakra UI、MUI、Ant Design、Bootstrap、Tailwind UI。
- 参考无障碍工具:axe DevTools、WAVE、Lighthouse、NVDA、VoiceOver、颜色对比检查器。
- 参考原型工具:Figma、Sketch、Adobe XD、Framer、InVision。
- 参考模式库:UI Patterns、Patternry、Mobile Patterns、Pttrns。
- 选择适合上下文的设计模式。
- 按品牌和用户定制模式。
- 用真实用户测试。
- 优先考虑无障碍。
- 持续更新最佳实践。
- 关注用户需求而非趋势。
- 将 UI 模式视为指南而非严格规则,酌情调整。
适用边界 · 注意事项
- 不适用于没有用户界面需求的纯后端、数据或算法任务。
- 不适用于必须严格照搬特定品牌/厂商设计系统且不允许按模式调整的场景。
- 不适用于需要真实用户研究数据替代通用模式指导的场景。