Files
win_ui_ux_design_skill/references/core-navigation-tabs.md
T

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