F2.14.1source order drives serial traversal设计
源顺序决定辅助技术与键盘的遍历顺序
别名: DOM 顺序 · source order · 文档顺序
概念解释
布局引擎可以凭 grid-area、order、绝对定位把按钮画到视觉右下角,树里它仍可能排在页脚链接后面。键盘和读屏走的是源顺序(DOM / 视图树),不是你看见的那张画。源是布局的输入清单;视觉是这张清单的投影。投影一改,串行访问仍按清单走。
读屏如何建缓冲区、浏览模式怎么切,是无障碍另一组的事。这里只锁布局侧:你用来排版的那份顺序,就是串行通道唯一承认的顺序。
机制
绘制按视觉规则走,Tab 和辅助技术按树走。两套投影。flex order、grid 摆放、float、绝对定位都只改绘制,不改树。于是出现「看见的下一件」和「按下去的下一件」不是同一个对象。
内容优先的意思是:树按任务顺序排(先标题和正文,再附属),再用布局把附属画到侧边或底下。反过来——为了让视觉好看去打乱树——等于把清单交给了画,串行通道拿到一份乱序购物单。
边界
画布、游戏、地图上的对象本来就不是一份线性清单,源顺序对它们几乎没有意义,焦点要用空间策略。可视化图表的图形元素若未进树,源顺序也管不到,那是另一条可访问性债。
用正的文档流就能排出来的界面,不必动 order。一旦动了,就等于承认两套投影可能分叉。
怎么落地
- 写布局之前先把源清单按任务排好:用户完成这件事的先后,就是树的先后。视觉位置用网格去放,不靠把节点在树里挪来挪去。
- 把
order、绝对定位当成会制造第二套顺序的工具,出现时必须对照一遍键盘走位。 - 验证:关掉显示器看,或只看焦点环,Tab 走完整页。报出的顺序若和你给明眼人讲的视觉阅读顺序不同,源清单和投影已经分叉。回到树里改先后,而不是再加一条视觉补丁。把这条路径录下来,下一次改网格时重放。