有必要<tbody>
在每张桌子上都有吗?根据标准。
6 回答
仅当您定义thead
和时tfoot
。它主要用于表格具有多个内容主体的情况。如果表中的数据很容易理解为,tbody
那么您可以放心地省略它。
对于仍在使用 IE7 的一小部分用户,如果您正在使用 DOM 方法构建表,则必须添加将 tr 封装在 tbody 标记中!
这将适用于所有主要浏览器:
var table = document.createElement('table');
var tbody = document.createElement('tbody');
var tr = document.createElement('tr');
tbody.appendChild(tr);
table.appendChild(tbody);
这在 IE7 中不起作用:
var table = document.createElement('table');
var tr = document.createElement('tr');
table.appendChild(tr);
我关于构建表的快速博客文章:http:
//blog.svidgen.com/2012/05/building-tables-in-ie7-with-javascript.html
值得注意的是,我不再努力在自己的项目中支持 IE7。在这一点上,对于大多数网站来说,IE<=7 的份额可能可以忽略不计。
Dumb Guy 给出了 HTML4 的答案(是)。Arwym为 HTML5 提供了一个相关问题的答案(否):
HTML5的表格数据规范 不需要它们:
tr
可以使用此元素 ( ) 的上下文:
- 作为元素的子
thead
元素。- 作为元素的子
tbody
元素。- 作为元素的子
tfoot
元素。- 作为元素的子
table
元素,在任何caption
、、colgroup
和thead
元素之后,但前提是没有tbody
元素是表元素的子元素。尽管我认为将行划分为
thead
,tbody
和tfoot
标记是一种很好的做法,因为它使表格的行更容易识别。最后,浏览器将始终为您添加至少
tbody
。
根据HTML 3.2 规范(table
不在 HTML 2 规范中)table
元素没有tbody
, thead
, tfoot
(它们是 HTML 4 的东西),只有可选caption
和tr
/列表th
。
虽然您可能会认为您在谈论 1997 年和 2021 年的 HTML 3.2 到底是什么鬼,但考虑使用原始或过时 HTML 引擎的电子邮件客户端,tbody
在这里没有任何意义。
大多数浏览器都是宽容的,但即便如此,我还是在我现在使用的所有表中添加了这对。即使是琐碎的桌子。尤其是现在我越来越多地使用 CSS 来装饰这些表格。
话虽如此,我的旧表在最新的浏览器上仍然可以正常工作。我正在努力学习,但是从长远来看,我会花一些额外的微秒来在这里和那里添加可选标签,最终会为您节省金钱/时间。
戴夫