文档 / 应用设计清单
应用设计清单
这份清单是动手前和提交前的检查工具,不是必须照抄的页面模板。先阅读 UI 设计原则,再根据真实任务选择结构。应用可以使用原生 DOM 和包内 CSS 做出不同的界面,但每个差异都应有产品理由。
页面结构
- 页面只有一个明确的主目的和一个主要操作;次要操作不会抢走焦点。(注意力)
- 标题、说明、内容和操作按照真实依赖关系分组,相关内容彼此靠近。(空间)
- 列表、详情和编辑属于不同任务时,使用清楚的页面位置、抽屉或弹窗表达层级;返回路径始终可见。(状态)
- 列表项只显示做决定所需的信息;完整内容在详情中阅读,不把所有字段挤在一行。(经验)
错误写法:在同一张卡片里同时放总览、筛选、编辑表单、批量删除和帮助说明。
正确写法:总览先显示一个焦点;筛选就地放在列表上方;编辑作为独立任务打开;低频帮助放在不打断流程的位置。
状态
| 状态 | 对应原则 | 必须说明 | 正例 / 反例 |
|---|---|---|---|
| 空 | 空状态属于结构的一部分(空间) | 当前范围为什么没有内容 | 正例:「还没有账目,添加第一笔」;反例:只留一块空白 |
| 加载 | 呈现必须跟随系统状态(时间) | 正在读取什么 | 正例:「正在读取本周记录」;反例:加载时显示成空列表 |
| 错误 | 不确定结果不能伪装成成功(时间) | 哪一步没有完成、是否可能已经保存 | 正例:「暂时无法读取,请重试」;反例:「出错了」 |
| 成功 | 变化要保留用户当前位置(时间) | 刚才完成了什么 | 正例:「账目已经保存」并留在当前列表;反例:跳回首页且没有提示 |
| 禁用 | 可见差异必须有真实原因(经验) | 为什么暂时不能操作 | 正例:说明「需要先选择日期」;反例:只降低透明度 |
状态示例必须同时满足四问:错误或加载时保留已经展示的内容和当前筛选,成功后保留当前位置,空状态提供下一步;这样状态变化不会让用户失去上下文。(空间、时间、注意力)
移动端
- 主要内容在窄屏仍然按照同一层级排列,不要求横向滚动才能完成主要任务。(空间)
- 触控目标清晰可用;输入文字至少 16px;底部操作不会被键盘或安全区遮挡。(经验)
- 次要列可以改为详情页、底部抽屉或菜单,但不删除 Web 端已有能力。(状态)
- 横向数据确实需要比较时才使用横向滚动,并且给出可见的列标题和当前位置。(注意力)
中文文案
- 文案描述用户正在做的具体事情,例如「正在读取记录」「已经保存」。(经验)
- 按钮使用动作名称,例如「添加记录」「保存修改」「撤销删除」,不使用「提交」「处理」等没有对象的词。(注意力)
- 不向普通用户展示
platform、Bridge、API、revision、静态检查等内部词语。(经验) - 进度文案不会把尚未完成的操作说成成功;错误文案说明下一步。(状态)
可访问性
- 每个输入都有可见标签或等价的
aria-label,placeholder 不是唯一说明。(经验) - 可操作元素使用 button、label 等熟悉语义,并且键盘可以到达和触发。(经验)
- 状态变化使用
role="status"或清楚的文本更新,不只依赖颜色、动画或图标。(状态) - 颜色和背景不是唯一的差异表达;减少动态效果时仍然可以完成任务。(空间)
正例:按钮写「保存修改」、输入有「金额」标签、完成状态同时显示文字;反例:按钮只写「提交」、输入只写 placeholder、只用颜色区分已完成和未完成。(经验、时间)
提交前四问
- 看起来的关系,和实际的关系一致吗?
- 注意力的分配,和重要性一致吗?
- 用户此刻是否清楚自己在哪、能做什么、发生了什么、怎么回去?
- 一个用过同类产品的人,能不能不经学习就看懂、会用?
把每一问写成 0–2 分:0 分表示明显违背,1 分表示部分满足,2 分表示清楚满足。低于 2 分时,先修改界面和文案,再提交源码。