茄总 开发文档

文档 / 应用设计清单

打开 Markdown

应用设计清单

这份清单是动手前和提交前的检查工具,不是必须照抄的页面模板。先阅读 UI 设计原则,再根据真实任务选择结构。应用可以使用原生 DOM 和包内 CSS 做出不同的界面,但每个差异都应有产品理由。

页面结构

  • 页面只有一个明确的主目的和一个主要操作;次要操作不会抢走焦点。(注意力)
  • 标题、说明、内容和操作按照真实依赖关系分组,相关内容彼此靠近。(空间)
  • 列表、详情和编辑属于不同任务时,使用清楚的页面位置、抽屉或弹窗表达层级;返回路径始终可见。(状态)
  • 列表项只显示做决定所需的信息;完整内容在详情中阅读,不把所有字段挤在一行。(经验)

错误写法:在同一张卡片里同时放总览、筛选、编辑表单、批量删除和帮助说明。

正确写法:总览先显示一个焦点;筛选就地放在列表上方;编辑作为独立任务打开;低频帮助放在不打断流程的位置。

状态

状态对应原则必须说明正例 / 反例
空空状态属于结构的一部分(空间)当前范围为什么没有内容正例:「还没有账目,添加第一笔」;反例:只留一块空白
加载呈现必须跟随系统状态(时间)正在读取什么正例:「正在读取本周记录」;反例:加载时显示成空列表
错误不确定结果不能伪装成成功(时间)哪一步没有完成、是否可能已经保存正例:「暂时无法读取,请重试」;反例:「出错了」
成功变化要保留用户当前位置(时间)刚才完成了什么正例:「账目已经保存」并留在当前列表;反例:跳回首页且没有提示
禁用可见差异必须有真实原因(经验)为什么暂时不能操作正例:说明「需要先选择日期」;反例:只降低透明度

状态示例必须同时满足四问:错误或加载时保留已经展示的内容和当前筛选,成功后保留当前位置,空状态提供下一步;这样状态变化不会让用户失去上下文。(空间、时间、注意力)

移动端

  • 主要内容在窄屏仍然按照同一层级排列,不要求横向滚动才能完成主要任务。(空间)
  • 触控目标清晰可用;输入文字至少 16px;底部操作不会被键盘或安全区遮挡。(经验)
  • 次要列可以改为详情页、底部抽屉或菜单,但不删除 Web 端已有能力。(状态)
  • 横向数据确实需要比较时才使用横向滚动,并且给出可见的列标题和当前位置。(注意力)

中文文案

  • 文案描述用户正在做的具体事情,例如「正在读取记录」「已经保存」。(经验)
  • 按钮使用动作名称,例如「添加记录」「保存修改」「撤销删除」,不使用「提交」「处理」等没有对象的词。(注意力)
  • 不向普通用户展示 platform、Bridge、API、revision、静态检查等内部词语。(经验)
  • 进度文案不会把尚未完成的操作说成成功;错误文案说明下一步。(状态)

可访问性

  • 每个输入都有可见标签或等价的 aria-label,placeholder 不是唯一说明。(经验)
  • 可操作元素使用 button、label 等熟悉语义,并且键盘可以到达和触发。(经验)
  • 状态变化使用 role="status" 或清楚的文本更新,不只依赖颜色、动画或图标。(状态)
  • 颜色和背景不是唯一的差异表达;减少动态效果时仍然可以完成任务。(空间)

正例:按钮写「保存修改」、输入有「金额」标签、完成状态同时显示文字;反例:按钮只写「提交」、输入只写 placeholder、只用颜色区分已完成和未完成。(经验、时间)

提交前四问

  1. 看起来的关系,和实际的关系一致吗?
  2. 注意力的分配,和重要性一致吗?
  3. 用户此刻是否清楚自己在哪、能做什么、发生了什么、怎么回去?
  4. 一个用过同类产品的人,能不能不经学习就看懂、会用?

把每一问写成 0–2 分:0 分表示明显违背,1 分表示部分满足,2 分表示清楚满足。低于 2 分时,先修改界面和文案,再提交源码。