J2.08.1structural reading order设计研究

播报顺序由结构顺序决定

别名: 源顺序决定播报 · AT 遍历顺序 · programmatic order

概念解释

读屏念出来的下一句,是结构树里的下一个节点,不是眼睛在画面上扫到的下一块。播报顺序由结构顺序决定:文档源、无障碍树里节点出现的先后,就是辅助技术遍历的先后。视觉排版可以把按钮画到右下角,只要它在树里排在页脚链接后面,听到的就是「先页脚、后按钮」。

这是一条对作者的判据,不是对阅读器内部如何缓存页面的说明。树排对了,播报才可能对;树排错了,再精致的视觉动线也救不了那条耳朵听到的序列。

机制

辅助技术不消费绘制结果,消费的是结构投影。作者写入源里的先后,经无障碍树变成可遍历的序列。CSS 改的是绘制,一般不改这棵树,所以「看起来的下一件」和「听到的下一件」默认不是用同一份清单对过的。

人用读屏完成任务时,理解靠的是序列里的因果关系:先标签后字段、先说明后操作、先商品后购买。结构把这两端的次序写反,听到的故事就是反的——不是少听了一句,是因果被颠倒。键盘焦点顺序常常跟结构走,但焦点乱跳是另一条操作问题;这里锁定的是被念出来的阅读序列是否等于作者想让人理解的那条。

怎么研究

让读屏用户(或评估者开着 NVDA / JAWS / VoiceOver 的浏览模式)不看屏幕走完一篇内容,把听到的对象顺序记成名单。另请明眼人标出他们的视觉阅读顺序。两份名单的第一处分叉,就是结构没有承载那条阅读。自变量:源里节点的先后(不改视觉)。因变量:序列一致率、任务是否按错对象、用户是否报告「听起来在乱跳」。

不要把「虚拟缓冲区怎么建」当作要测的机制;要测的是作者交给结构的那份顺序,是否就是任务顺序。不同阅读器组合可以做稳健性复查,但判据本身跨组合成立。

边界

画布、地图、游戏对象本来就不是一份线性清单,结构顺序几乎没有「正确阅读」可言,需要另做空间探索策略。可视化里根本没进无障碍树的图形,结构顺序管不到。表格、列表一旦用了对应语义,内部会按行 / 项的规则走,不能再用「整页从上到下」去套。正的文档流已经按任务排好时,不必再发明第二套顺序。

怎么落地

  • 先按「完成这件事的先后」写结构:标题和说明在操作之前,标签在字段之前,商品信息在购买之前。视觉位置用布局去放,不要靠在树里颠倒节点来迁就画面。
  • 每个主要模板交出一份「应当被听到的顺序」名单,和源里的节点顺序对照,而不是和设计稿的左右对照。
  • 验证:关掉显示器,只用浏览模式把主路径听完,把听到的名称按顺序记下来。拿去问没看过稿的人「这是在干什么」。若故事讲不通,或与你给明眼人讲的步骤相反,改的是树的先后,不是再画一条视觉箭头。

延伸

  • 同组J2.08.2 视觉重排会造成顺序错乱 · J2.08.3 多栏布局需明确阅读路径
  • 相邻J5.09 屏幕阅读器的工作原理 · J3.02 焦点顺序与焦点陷阱 · F2.14 内容优先的布局顺序
  • 站内检索structural reading order · source order · AT traversal

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/J2.08.1