Files

11 KiB
Raw Permalink Blame History

桌面导航、标签页与窗口交互规范

目录

  1. 选择导航模型
  2. 目的地、路由与状态模型
  3. 导航、后退与焦点恢复
  4. 自适应导航与应用外壳
  5. 静态标签与文档标签
  6. 未保存内容与关闭协议
  7. 多窗口与窗口生命周期
  8. 键盘与无障碍
  9. 测试矩阵
  10. 交付检查清单

1. 选择导航模型

先根据用户心智模型选择,不按视觉偏好混用:

模型 表达含义 典型呈现
顶级导航 在应用主要目的地之间切换 带标签的侧边或顶部导航 + 页面容器
层级导航 进入对象或任务的下一级,并允许后退 路由栈、主从页面或显式导航控制器
静态标签 在少量、固定、同一对象的同级属性页之间切换 不可关闭的标签或分段选择器
文档标签 管理可创建、关闭、重排和可能移动到窗口的工作文档 可关闭、移动和溢出的文档标签
多窗口 并行展示独立任务、文档或工具 具有独立状态容器的顶层窗口
辅助面板 补充当前任务,不成为新的顶级目的地 侧面板、检查器或可停靠面板

不要使用标签页表示彼此无关的应用目的地,也不要用顶级导航伪装可关闭文档。层级导航、文档历史和编辑撤销是三种独立历史,不共用一个“后退”命令。

在编码前定义:目的地清单、稳定 ID、层级关系、可深链参数、进入/离开条件、后退语义、状态保留、加载策略、权限、未保存行为、多窗口所有权和恢复策略。

2. 目的地、路由与状态模型

稳定身份

  • 使用路由/目的地 ID、文档 ID 和窗口 ID 标识状态,不使用导航项索引或当前标签位置。
  • 路由参数只包含可序列化的最小身份;大型对象和敏感数据放在应用状态/服务中。
  • 同一文档重复打开时明确激活现有标签、创建只读副本,还是允许多个编辑会话。
  • 权限变化或对象删除后,历史记录不得导航到可操作的幽灵页面;显示可恢复状态或移除记录。

每个页面保存什么

按产品价值决定保留:滚动位置、选中对象、筛选、展开节点、输入草稿、焦点目标、分页和子视图。持久业务数据与临时视图状态分开。

  • 前进/后退通常恢复页面上下文,不重新创建空白页面。
  • 刷新数据不应默认清空用户位置;无法恢复时将焦点放到语义最近的位置。
  • 导航缓存需要容量和失效策略,不能无限保留页面、订阅、线程和敏感数据。
  • 恢复失败时安全回到有效目的地并说明原因,不崩溃或显示空壳。

3. 导航、后退与焦点恢复

进入目的地

  • 点击当前已激活的顶级导航项默认不重复压栈;需要“回到顶部/刷新”时显式定义。
  • 导航启动后防止重复触发。异步加载显示当前目的地的骨架/进度,并忽略过期结果。
  • 先确认离开条件,再切换选中导航项;被未保存状态阻止时恢复原导航视觉。
  • 失败时保留上一页或显示可操作错误,不短暂显示目标页后再弹回。

后退与前进

  • 仅在有有效历史时启用后退;不要显示一个永远禁用的装饰按钮。
  • Alt+Left/鼠标后退键按应用导航历史返回;不要撤销编辑或关闭文档。
  • 后退前运行与直接导航相同的未保存协调器。
  • 从详情返回列表时恢复筛选、选择、滚动和焦点;目标已删除时选择相邻项或列表容器。
  • 深链首次进入没有应用内上一页时,后退回到合理的应用起点或关闭该任务窗口,规则必须明确。

焦点

  • 导航完成后把焦点放到页面标题、主内容或恢复的任务位置,而不是留在不可见导航项。
  • 用户通过键盘选择导航项时保持可预测焦点;指针导航不应无必要抢走当前输入焦点。
  • 弹层、对话框和辅助面板关闭后将焦点返回调用者或逻辑后继。
  • 加载完成不自动把焦点从用户正在操作的其他控件抢走。

4. 自适应导航与应用外壳

  • 紧凑、中等、宽布局使用同一目的地和选择状态,只改变呈现方式。
  • 导航面板折叠/展开不重建页面、不清空历史、不丢焦点。
  • 紧凑模式保留可发现的打开导航入口;图标必须有文本/工具提示和无障碍名称。
  • 顶级项保持稳定顺序。权限或功能开关改变时,移除无权项并处理当前目的地回退。
  • 标题栏拖动区域不能覆盖导航按钮、搜索、标签关闭或窗口命令。
  • 设置、账户和帮助等固定项与主要业务目的地分组,但仍参与明确的焦点顺序。
  • 窗口变窄时优先折叠次要面板、重排主从内容,再隐藏低频命令;不把关键任务变成仅菜单可用。

5. 静态标签与文档标签

静态标签

  • 用于少量固定同级页面,不提供新建、关闭、拖动或未保存标记。
  • 标签切换应快速。内容加载有明显延迟时使用手动激活:方向键移动焦点,Enter/Space 激活。
  • 标签名称简短且稳定;不要用仅图标标签承载关键分类。
  • 切换后保留每页内部状态,除非数据刷新是明确操作。

文档标签

每个文档标签维护稳定文档 ID、标题、脏状态、加载/错误、只读/冲突、固定状态和所属窗口。标签位置只是显示顺序。

  • 单击激活文档;关闭按钮只关闭命中标签,不先意外切换并触发其他副作用。
  • 支持关闭当前、关闭其他、关闭右侧等命令时准确处理固定标签和未保存标签。
  • 关闭后优先激活最近使用或邻近标签,并将焦点放到合理位置。
  • 重排不改变文档身份、保存目标、撤销栈或后台任务所有权。
  • 标签太多时提供滚动、溢出列表或搜索;不能把标签压缩到无法识别。
  • 标签标题变化保持关闭按钮位置稳定;脏状态使用符号并提供无障碍文本,不只变颜色。
  • 双击标签、双击空白区和中键关闭仅作为加速路径,必须有显式按钮/菜单/键盘入口。
  • 拖出新窗口是高级能力;需定义取消拖动、跨 DPI、失败回退和最后标签行为。

标签键盘

  • Ctrl+Tab/Ctrl+Shift+Tab 在文档标签间切换;是否按显示顺序或最近使用顺序要保持一致。
  • Ctrl+W 关闭当前可关闭文档;不会绕过未保存检查。
  • 标签条聚焦后使用方向键移动,Enter/Space 激活;Delete 关闭仅在产品明确采用时启用。
  • 关闭后焦点移动到新激活标签或逻辑后继,不落到已删除对象。

6. 未保存内容与关闭协议

所有离开路径调用同一关闭协调器:导航离开、后退、关闭标签、关闭窗口、退出应用、切换账户和外部打开另一文档。

推荐协议:

  1. 收集受影响的脏文档/表单和正在提交的任务;
  2. 无修改则直接继续;可自动保存则先安全保存;
  3. 需要决策时显示具体对象和“保存 / 不保存 / 取消”;
  4. 多文档退出支持逐项或“全部保存”,并报告失败项;
  5. 只有全部必要保存成功或用户明确放弃后才完成关闭;
  6. 取消关闭恢复原窗口、标签、导航选择和焦点。
  • 保存失败不得关闭;保留内容并提供重试、另存或复制恢复数据。
  • 后台任务与文档绑定时定义关闭后取消、继续后台或转移所有权。
  • 进程崩溃恢复与正常未保存提示分开;恢复草稿不能覆盖较新的服务端版本。
  • 不用“是否发生过键盘输入”判断脏状态,应比较规范化领域快照或命令状态。

7. 多窗口与窗口生命周期

  • 每个窗口具有明确任务、所有者和状态容器;不要依赖全局“当前窗口”。
  • 应用级服务可以共享,页面选择、导航历史、焦点、文档视图状态通常按窗口隔离。
  • 辅助窗口定义模态性、任务栏显示、始终置顶、最小化/恢复和父窗口关闭行为。
  • 同一文档在多窗口编辑时定义单写者、协同、只读副本或冲突策略。
  • 关闭父窗口前处理其拥有的对话框、弹层、未保存内容和后台任务。
  • 保存窗口位置/尺寸/最大化/停靠布局;恢复时限制到当前显示器可用区域。
  • 显示器移除、DPI 改变或窗口恢复失败时使用安全默认位置和最小可用尺寸。
  • 最后一个窗口关闭是退出、留在托盘还是保留后台服务必须明确,不让任务静默终止。

8. 键盘与无障碍

  • 顶级导航、标签条和页面内容是不同复合区域;Tab 在区域间移动,方向键在区域内移动。
  • 当前导航目的地与键盘焦点分别可见,并向无障碍 API 暴露选中/激活状态。
  • 后退、关闭、新建标签、切换标签和窗口命令具有标准快捷键及菜单说明。
  • 标签关闭按钮、仅图标导航项和窗口按钮提供准确名称;重复标签增加可区分上下文。
  • 页面标题使用可导航语义;导航完成和错误加载时播报目的地变化,但不重复朗读整页。
  • 高对比度、200% 缩放和长翻译下仍能识别活动目的地、活动标签、脏状态和关闭入口。
  • 动效尊重系统减少动画设置;转场不延迟输入或导致前庭不适。

9. 测试矩阵

至少验证:

  1. 当前目的地重复点击、快速连续导航、加载失败和过期响应;
  2. 后退/前进、深链首次进入、对象删除和权限变化;
  3. 紧凑/宽导航切换、贴靠、标题栏命中和焦点保持;
  4. 静态标签、文档新建/关闭/重排/溢出和重复打开;
  5. 单个/多个脏文档的保存、不保存、取消和保存失败;
  6. Ctrl+Tab、Ctrl+W、Alt+Left、方向键、Enter、Space、Delete 和 Shift+F10;
  7. 多窗口共享文档、关闭父窗口、最后窗口和后台任务;
  8. 窗口位置恢复、显示器移除、100%–200% DPI 和高对比度;
  9. 屏幕阅读器对目的地、活动标签、脏状态、标签数量和加载结果的播报;
  10. 原型与最终桌面实现的路由、关闭和恢复契约对照。

10. 交付检查清单

  • 已区分顶级导航、层级导航、静态标签、文档标签和多窗口。
  • 所有目的地、文档和窗口使用稳定 ID,不依赖显示索引。
  • 后退、刷新和导航失败能够保留或安全恢复用户上下文。
  • 标签关闭、重排、溢出、快捷键和焦点后继明确。
  • 所有离开路径共享未保存协调器,保存失败不会丢失内容。
  • 多窗口的所有权、共享状态、关闭和最后窗口行为明确。
  • 自适应布局不会重建状态或破坏标题栏命中。
  • 键盘、缩放、高对比度和屏幕阅读器已验证。
  • 原型与桌面实现使用同一路由和文档状态契约。