我提供的数据表大致如下:
| | 2009 | 2010 | 2011 |
| location 1 | pass | pass | fail |
| location 2 | fail | pass | pass |
对于普通读者来说,第一列(位置名称)的含义是清楚的,并且从视觉上看,去掉列标题会更好。然而,这对使用屏幕阅读器的人没有帮助,而且,毫不奇怪,WAI验证失败。
我的标记看起来像:
<table>
<thead>
<tr>
<th> </th> <!-- question here -->
<th>2009</th>
<th>2010</th>
<th>2011</th>
</tr>
</thead>
...
所以我的问题是:我应该在指定的
th
中添加什么,以便它为需要它的人提供支持和上下文,但不会为不需要它的人添加视觉混乱?我想到的一个方法是将列标题添加到标记中,然后使用CSS使其不可见以供有远见的读者使用。但是,我想知道是否有更好(更语义)的方法使用ARIA元数据或类似的东西?
最佳答案
TL;DR:Column 1,cell 1应该是:<td> </td>
注意这不是一个答案,我需要更多的格式化空间
伊恩左the following comment:
但这正是关键所在。我想用一些能帮助用户依赖屏幕阅读器的东西来为专栏添加注释,同时又不会让其他用户分心
……但为什么?我见过99%的桌子,把这个单元格留空,这样你就不会把扳手扔进袋子里。
使用CSS隐藏文本以添加“此单元格故意留空”将不添加任何值。它增加了人们不得不听的无用的玩笑。此外,每天使用屏幕阅读器的人通常不会逐行阅读。当他们遇到一个表时,辅助技术会公布列数和行数,然后是摘要(见下文),然后是<caption>
。
如果要描述此单元格中的表,请执行以下操作:例如:(表包含从-到日期之间的xxx的数据。别这样,老办法是使用summary
属性(<table summary='...'>
)。W3c验证器现在说
“summary属性已过时。请考虑在caption元素或包含表的figure元素中描述表的结构;或者简化表的结构,这样就不需要描述了。”
当你使用HTML5的时候。
从一些快速的研究[1]、[2]、[3]来看,上面的验证器错误是从WorkingGroup decision from April 2011获取的。我的直觉是,他们建议使用<caption>
标签是为了让更多的人可以访问它,ala是更普遍的设计。我没有看到任何赞成或反对说你不能使用aria-describedby="{ID}"
,并把那一段推下屏幕。
关于html - 标记隐式列标题以实现HTML的可访问性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17041646/