Files

11 KiB
Raw Permalink Blame History

交互与状态

先走通用户任务

用一条主要路径说明:从哪里进入、识别哪个对象、作出什么决定、执行哪个动作、看到什么结果。只展开当前范围相关的分支,不为一个小表单设计整个产品流程。

浏览、比较、选择和编辑是不同任务。列表用适合比较的身份、数据或预览;只读详情不默认铺满禁用输入框;用户明确进入编辑后再显示需要的控件。需要连续批量配置的工作表可以持续编辑,但必须有一致的对象与保存语义。

同一对象与动作沿用统一名称。品牌表达可以改变外观,不随意改变返回、关闭、保存、删除等熟悉动作的含义。

对象身份

一个对象靠四样东西认出来,按顺序取,够区分就停:

  1. 视觉身份:缩略图、头像、封面、Logo 或媒体帧。同一对象在各处用同一裁切和比例;加载失败时用稳定的兜底图,并保留名称。
  2. 主名称:用户平时称呼和搜索用的名字。
  3. 区分字段:同名或相似对象之间最能区分的一个字段。
  4. 影响判断的状态:只在它会改变选择或操作时显示。

数据库 ID、看不懂的长文件名、所有对象都一样的类型标签、装饰图标、截断后彼此相同的文字,都不能充当身份。

选择器首先是对象识别器,不是字符串下拉框。选项显示图片、名称和必要的区分字段;收起后仍显示足够的身份,用户不用重新打开就能确认选了谁;搜索覆盖名称和区分字段;已选对象不在当前分页或筛选结果里时,仍然显示。

把这四样做成一个共享的对象身份组件,列表、表格第一列、选择器、已选结果和详情标题都用它。

列表、表格与详情

列表只回答三件事:有哪些对象,它们在决策上有什么不同,该打开哪一个。每项只放身份、一个影响判断的状态、比较所需的最少字段、整项点击和“更多”。完整分析、证据、关联对象、编辑和历史放进详情。

  • 表格还是卡片:要横向比较同一字段(数值、状态、日期、价格)用表格;主要靠图片和内容挑选用卡片或列表;每项主体是长文或完整媒体时不压进表格行。同一类对象在整个产品里只保留一种主要形态,只有用户确实有两种任务时才提供视图切换。
  • 每一列都要有答案:它帮助比较、表达状态、需要直接修改,还是可执行操作?答不上来就删,不把详情字段逐列搬进表格。用来识别对象的那一列放在最前,横向滚动时固定;单位写在表头,不在每个单元格里重复。
  • 一个单元格只做一件事:识别、比较、状态、编辑或操作中的一种。不在单元格里拼“预览 + 状态 + 数量 + 按钮”的迷你卡片;状态只在固定的一列表达一次;行级动作放固定的操作列,不在内容下面再排一行按钮。
  • 批量:只有真的存在批量动作时才显示多选框。筛选变化后不静默操作看不见的已选项:要么清除隐藏的选择,要么写明数量和范围。
  • 点击:卡片主体和“查看”按钮不做同一件事;整张卡可点时,卡内的独立控件不触发外层点击。编辑完成后回到原行,原行显示最新状态。

动作层级

层级 用途 呈现
主操作 完成这个区域的主要任务 一个高强调按钮,写成“动作 + 对象”,例如“发送报价”
次级操作 高频但不是主要任务 低强调文字按钮
管理操作 重命名、复制、重新处理、可撤销的删除 收进“更多”,菜单项写文字
危险操作 不可恢复或损失大 在菜单里用分隔线隔开,并确认

可撤销的操作直接执行并提供撤销,不再确认;不可撤销的操作确认时写出对象和后果,按钮写动作,例如“删除 3 个文件”,不写“确定”。同一区域出现两个高强调按钮,就重新判断主任务。“处理”“管理”“继续”这类词说不出结果,换成动作加对象。次级操作可以在悬停、聚焦或选中该项后出现,但要预留位置、不挤动内容,触屏上要有等价入口。

每个可见动作都要有真实结果:数据变化、明确范围的预览、可观察的任务状态、导航,或者复制、下载这类本地结果。没有写入能力就不显示写操作,不用长期禁用的按钮占位;当前状态不允许的菜单项直接隐藏,不留无法解释的灰色图标。

帮助文案只解释界面推断不出的规则、限制和风险;先修正标题、默认值或结构,不用长说明弥补流程混乱。使用原生或已有可靠控件,保持标签、焦点、键盘操作与可访问名称;校验和重要状态不只用颜色或悬停提示表达。

表单与提交

只收集当前任务必需且无法可靠带入的信息。系统已知的值合理预填,需要用户判断的值保留可编辑性;数据属于其他对象时说明来源,不能悄悄改写源对象。

相关字段形成清楚的提交边界。一次用户意图只提交一次,处理中防止重复操作;结果即时生效时不再增加无意义的保存。

只有字段依赖、错误代价或任务长度确实需要时,才增加步骤、预览、草稿或额外确认。行内编辑适合简单独立字段;复杂关联编辑进入能容纳完整任务的表面。

校验在能够修正的位置显示原因和修正方式。提交失败保留输入、当前对象和位置;返回上一步或从源数据编辑返回时维持流程连续性。

按范围表达状态

情况 界面要表达的内容
首次加载,尚无内容 在最终内容区域提供适量占位或进度,保持结构稳定
刷新或筛选,已有内容 保留可用内容并标示正在更新,不把旧结果误当成新查询完成
集合确实为空 说明原因,并给适合当前任务的开始动作
搜索或筛选无结果 保留查询条件,提供调整或清除条件的方式
局部提交 在触发位置表达处理中,保持按钮尺寸,防止重复提交
后台长任务 给对象明确的排队、处理中、完成或失败状态及必要进度
加载或提交失败 在相应范围解释原因和恢复动作,不要求用户重新寻找对象

同一范围不同时表达互相矛盾的状态。局部请求不清空整页,进度不重复堆叠,等待结果不伪装成空集合。

占位布局应接近实际内容,不制造额外滚动。已有数据刷新时保持结果、数量与查询条件的对应关系;快速连续操作后只呈现当前意图对应的结果。

模型在交互上的默认做法

这些做法单看都说得过去,所以模型会不假思索地用。出现时换成右边的做法:

默认做法 换成
首页开头四张指标卡,数字没有比较基准,也引不出动作 首页回答“现在该处理什么”,见设计方向的“产品界面”
可撤销的操作也弹确认框 直接执行并提供撤销;只有不可撤销的操作才确认,见“动作层级”
所有反馈都用角落里的浮动提示,包括错误 反馈出现在触发的位置;错误留在原处直到解决。浮动提示只用于离开视线的结果,例如已复制、已发送
一加载就整页转圈 保留已有内容,只在变化的区域标示更新,见“按范围表达状态”和下文数字
空状态只有一张插图和“暂无数据” 说明为什么空、下一步做什么,给一个能直接开始的动作;能导入或预填示例就提供
字段一字排开,用占位文字当标签,提交后才一起报错 标签常驻在输入框上方,按任务分组;离开字段时校验,提交出错时聚焦到第一个错误并说明怎么改;少数可选字段标“选填”,不给满屏必填项加星号
按钮禁用,却不说为什么;每行末尾一排图标按钮;必要按钮只在悬停时出现 按“动作层级”重排:主操作一个,管理操作进“更多”,触屏和键盘都能到达
详情和设置默认用弹窗 按任务选择弹窗、侧面板或完整页面,见布局与视口的“选择承载方式”
表格所有列等宽、居中 按“列表、表格与详情”删掉答不出用途的列;对齐方式见视觉语言的“细节”
按回车才搜索,无结果时只写“无结果” 输入即筛选(请求较重时防抖 150–300ms);无结果时保留查询,给出放宽条件或清除的入口
一两个字段也拆成多步向导 只有步骤之间确实依赖时才分步;否则一页完成,并能看到全部范围
保存后跳回列表,看不出刚改的是哪一条 回到原位置,把刚改动的对象高亮 1–2 秒

有数字的底线

  • 响应:100ms 内给出按下反馈。300ms 内能完成的操作不显示加载,避免一闪而过;超过 1 秒显示骨架或进度;超过 10 秒显示进度,并允许离开后回来查看。加载指示一旦出现,至少停留 400–500ms。
  • 对比度:正文与背景至少 4.5:1;大字(约 24px 以上,或 19px 以上的粗体)、图标和控件边界至少 3:1。
  • 点击区域:触屏至少 44×44pt(Android 48dp),相邻目标之间留 8px;桌面指针目标至少 24×24px。
  • 文字:手机上的输入框文字不小于 16px,否则 iOS 聚焦时会自动放大页面。正文字号和行高见 视觉语言 的“可读性是交付门槛”;阅读型正文每行中文 25–40 字、英文 45–75 个字符。
  • 提示停留:普通提示 4–6 秒,带撤销的 5–10 秒;鼠标悬停在提示上时暂停计时。重要错误不用会自动消失的提示。
  • 键盘:Esc 关闭浮层,并把焦点还给打开它的元素;Enter 提交单行表单;弹窗打开时焦点落在第一个输入或主按钮上,Tab 不跑到弹窗外面。

确认与完成

需要等待结果的操作有可观察的生命周期。提交后保留对象与反馈;同步完成后再呈现成功,失败时保留恢复入口。

可以关闭表面的后台任务,应已转为可持续观察的任务状态。关闭窗口不是取消请求;没有真实取消能力时,不把关闭或取消描述成已撤回操作。

关键保存从界面重新读取或重新进入验证。模拟原型可以演示状态,但交付时明确模拟边界,不声称真实数据已写入。