我提供的数据表大致如下:

|                   |  2009  |  2010  |  2011  |
| location 1        |  pass  |  pass  |  fail  |
| location 2        |  fail  |  pass  |  pass  |

对于普通读者来说,第一列(位置名称)的含义是清楚的,并且从视觉上看,去掉列标题会更好。然而,这对使用屏幕阅读器的人没有帮助,而且,毫不奇怪,WAI验证失败。
我的标记看起来像:
<table>
 <thead>
   <tr>
     <th>&nbsp;</th> <!-- question here -->
     <th>2009</th>
     <th>2010</th>
     <th>2011</th>
   </tr>
 </thead>
 ...

所以我的问题是:我应该在指定的th中添加什么,以便它为需要它的人提供支持和上下文,但不会为不需要它的人添加视觉混乱?
我想到的一个方法是将列标题添加到标记中,然后使用CSS使其不可见以供有远见的读者使用。但是,我想知道是否有更好(更语义)的方法使用ARIA元数据或类似的东西?

最佳答案

TL;DR:Column 1,cell 1应该是:<td>&nbsp;</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/

10-13 01:36