W3C的ARIA Authoring Practices Guide将Grid描述为容纳信息或交互元素的通用容器。文档使用“行”和“列”说明其逻辑结构,同时明确这种角色不必有表格状的视觉呈现。它把用途分成两类:数据网格呈现表格式信息,布局网格把其他控件组织在一起。两者使用相同的角色、状态和属性,实际内容与目的却可能不同,因此不能仅凭出现行列词汇,就认定容器里都是二维数据。

数据网格可以有行标题、列标题,或两者都有,表格内容也可以是可编辑或可交互的。但文档对焦点的要求,比“内容可编辑”更宽:每个单元格应当本身可取得焦点,或者含有可取得焦点的元素。也就是说,某格只读,并不自动使它失去这一位置。标题格有一个明确例外:没有排序、过滤等功能的行列标题,可以不取得焦点;其职责仍然是标识对应的行或列。

APG把这个区别联系到应用阅读模式。在网格交互时,读屏软件通常处于这种模式,只读可取得焦点的元素,以及为这些元素提供标签的内容。既不能聚焦、又不用来标识行列的内容,可能被使用者遗漏。这里描述的是文档给出的信息暴露关系:标题通过标识其他内容参与表达,普通单元格则不能单凭“只是文字”就被等同于非功能标题。

布局网格没有必须存在的行列标题,可以只有一行或一列,即便展开成多行多列,也仍可能是一组逻辑同质的元素。原文的例子是消息收件人列表:每格中的链接代表一个收件人,加入更多收件人后,原来的一行可能换成多行。换行改变排列位置,但这些元素仍同属“收件人”集合,没有因此变成表格中代表不同属性的数据列。

这也解释了文档为什么分别讨论两类网格的导航关系。布局集合可以跨视觉行延续,数据网格的行列位置却承载二维组织信息;同一种换行延续方式,对两类内容的意义不同。此处的差异来自集合顺序与表格式坐标的组织目的,而不只是容器外观究竟画了多少行。

单元格与内部控件还有另一层区别。APG举例说,如果格内有按钮,而焦点落在单元格而不是按钮上,读屏可能读出按钮名称,却没有告诉使用者那里是一个按钮。名称被读出,与控件身份被表达,并非同一件事。文档把“格内一个控件取得焦点”和“纯文字或单幅图形所在的格取得焦点”分别列出,内容对象不同,焦点所指的对象也就不同。

当单元格包含可编辑内容、多个控件,或本身需要方向键的控件时,格间导航与格内交互还可能争用同一类按键。APG因此另设格内编辑和导航的章节。对这些文字的理解,先要区分网格作为容器、单元格作为位置、内部控件作为交互对象三个层次,而不是把每个格里的所有内容都当作一个无差别的焦点。

信息来源

本文基于上述公开资料整理,未使用来源页面的图片、视频或嵌入媒体。