是否有必要在任何表中使用<th>
?即使表没有标题?
表有3个其他标记<thead>
<tbody>
<tfoot>
即使我没有任何表格页脚,也必须使用所有标记。 Firefox默认情况下会在代码中添加所有这些内容。
并且有必要,<th>
始终应该在<thead>
如果我在客户收到的内容中有标题,并且标题来自表外但与表有关,那么我应该如何将该标题放在表中
如上表
<h3>Heading of table<h3>
<table>......</table>
作为表格的标题
<table>
<thead><tr rowspan=3><th>Heading of table</th></tr></thead>
或作为表格的标题
<table>
<caption> Heading of table</caption>
哪种屏幕阅读器有用,语义正确?
答案 0 :(得分:13)
根据HTML DTD,这是HTML表格的内容模型:
<!ELEMENT TABLE - - (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)> <!ELEMENT CAPTION - - (%inline;)* -- table caption --> <!ELEMENT THEAD - O (TR)+ -- table header --> <!ELEMENT TFOOT - O (TR)+ -- table footer --> <!ELEMENT TBODY O O (TR)+ -- table body --> <!ELEMENT COLGROUP - O (COL)* -- table column group --> <!ELEMENT COL - O EMPTY -- table column --> <!ELEMENT TR - O (TH|TD)+ -- table row --> <!ELEMENT (TH|TD) - O (%flow;)* -- table header cell, table data cell-->
所以这是非法语法:
<thead><th>Heading of table</th></thead>
应该是:
<thead><tr><th>Heading of table</th></tr></thead>
任何地方都不需要 <th>
元素。它们只是您可以在表格行中使用的两种单元格类型之一(另一种是<td>
)。 <thead>
是一个可选的表格部分,可以包含一行或多行。
修改关于为什么使用<thead>
,有以下几个原因:
<thead>
内容放在每个页面的顶部,这样人们就可以了解列的含义而不会轻弹几页; <tbody>
元素,<thead>
元素,两者或其他组合。它为你提供了一些其他东西来编写选择器; 作为(5)的一个例子,你可以这样做:
$("table > tbody > tr:nth-child(odd)").addClass("odd");
<thead>
元素表示这些行不会以这种方式设置样式。或者你可以这样做:
$("table > tbody > tr").hover(function() {
$(this).addClass("hover");
}, function() {
$(this).removeClass("hover");
});
使用:
tr.hover { background: yellow; }
再次排除<thead>
行。
最后,许多相同的参数适用于在<th>
元素上使用<td>
元素:您指出此单元格不是数据而是某种标题。这些单元格通常会在<thead>
部分的一行或多行中组合在一起,或者是每行中的第一个单元格,具体取决于表格的结构和性质。
答案 1 :(得分:4)
如果要显示表格数据,请使用<th>
- 每列使用一个。这对普通用户来说很好,对屏幕阅读器也很重要。如果您将表格用于布局目的(或其他恶意方案......),请不要使用<th>
。
答案 2 :(得分:2)
不,没有必要。但它看起来并不像你正确使用它。通常,每列都有一个。正确使用的一个简单示例是:
<table>
<tr><th>Breed</th><th>Name</th></tr>
<tr><td>Pekingese</td><td>Pluto</td></tr>
<tr><td>Lab</td><td>Buddy</td></tr>
</table>
你也可以这样做:
<table>
<thead><tr><th>Breed</th><th>Name</th></tr></thead>
<tr><td>Pekingese</td><td>Pluto</td></tr>
<tr><td>Lab</td><td>Buddy</td></tr>
</table>
答案 3 :(得分:1)
答案是
如果您使用表格来显示表格数据。
表格数据由于某种原因被组织成行和列。 表格单元格中数据的含义由列的含义及其出现的行定义。
重要的是要识别那些对行和列有意义的单元格,而不是仅包含数据的单元格。
例如,下表绝对没有传达任何有意义的信息:
34 56 90 15 45 65 85 30 50 55 70 35
如果行和列具有名称,则数字仅具有意义。这些名称使用<th>
标记:
Feb May Aug Nov ITH JFK IST
当然,我们仍然不知道这些数字是什么意思,这就是为什么需要<caption>
:
Average Temperatures by Month at Selected Airports Feb May Aug Nov ITH JFK IST
最后,重要的是要注意诸如测量单位,数据源等细节。这种信息通常在表格的页脚中出现:
Average Temperatures by Month at Selected Airports Feb May Aug Nov ITH JFK IST Temperatures in °F. Source: Publication #456 MNMO
表的标题进入<caption>
。当表变大时,<thead>
和<tfoot>
部分特别有用。有关示例,请参阅How to deal with page breaks when printing a large HTML table。
您可以使用<colgroups>
将逻辑相关的数据组合在一起。
答案 4 :(得分:0)
您希望最好地使用描述数据的内容。
<caption>
将描述整个表格。 th
将创建一个单元格,通常用于描述一列(但也可用于行标题)。
thead
,tfoot
和tbody
。所有都可以使用,并且都是可选的,只要它们按顺序排列(如果使用),并且您只有一个thead
和一个tfoot
(但您可以有多个tbody
。许多浏览器如果不这样做,(全部?)将隐式添加它们,但规范说它们是可选的。
th
位于何处, tr
都可以显示在任何tr
内。
答案 5 :(得分:0)
<table> <tr> <td>text</td> </tr> </table>
这是我能想到的最小表格。
答案 6 :(得分:0)
好处是语义。 <th>
表示 T 能够 H eader。用它来标记列的标题。通常在<thead>
内。