我有以下标记作为Razor视图的一部分:
<table>
<caption>Presidents</caption>
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">Born</th>
<th scope="col">Died</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Washington</th>
<td>1732</td>
<td>1799</td>
</tr>
<!-- etc -->
</tbody>
</table>将“验证的目标模式”设置为HTML5后,Visual会发出这样的抱怨:
警告1验证(HTML5):元素'th‘不能嵌套在元素'tbody tfoot’中。
这是真的吗?如果是的话,有人能链接到规范吗?
我的理解是,对行标题使用<th>不仅合法,而且鼓励。当然,这似乎相当普遍,我可以链接几十个教程,解释(似乎明智地)它有助于可访问性。
这是VS的错误吗?HTML5带来了真正的改变(好的改变?)坏的?)?怎么回事?
发布于 2011-04-01 04:35:41
我的理解是,对行标题使用
<th>不仅是合法的,而且鼓励
据我所知,这在HTML 4(可能是它的前身)中是合法的,而且在HTML5中没有改变。
W3C的HTML5验证器虽然还处于试验阶段,但没有报告警告或错误。再说一次,我确信Visual使用的HTML5验证也是实验性的,因为HTML5本身还没有最终完成。
关于标记表格数据的HTML5规范 (特别是第4.9.13节 )显示了在<tbody>和<tfoot>中使用<th>对行数据进行范围设置:
<table>
<thead>
<tr>
<th>
<th>2008
<th>2007
<th>2006
<tbody>
<tr>
<th>Net sales
<td>$ 32,479
<td>$ 24,006
<td>$ 19,315
<tr>
<th>Cost of sales
<td> 21,334
<td> 15,852
<td> 13,717
<tbody>
<tr>
<th>Gross margin
<td>$ 11,145
<td>$ 8,154
<td>$ 5,598
<tfoot>
<tr>
<th>Gross margin percentage
<td>34.3%
<td>34.0%
<td>29.0%
</table>因此,将<th>元素包含在<tbody>或<tfoot>中的<tr>元素中是完全合法的。无论如何,应该是这样的,因为表标题不只是在表标题上找到的。
发布于 2011-04-01 04:37:36
HTML5规范tr和规范实际上包括一个th嵌套在tbody中的示例。
发布于 2013-08-17 00:14:54
通常,TH在THEAD中的scope值为"col",而TH在TBODY中的scope值为"row"。
https://stackoverflow.com/questions/5509163
复制相似问题