【问题标题】:thead, tfoot and tbody order in HTML5HTML5 中的 thead、tfoot 和 tbody 顺序
【发布时间】:2013-09-19 18:06:31
【问题描述】:

我正在阅读in a forum 关于<tfoot> 元素,它必须在<thead> 元素之后。相比之下,我看到有些人使用命令<thead><tbody><tfoot>。那么什么是正确和最好的顺序呢?

【问题讨论】:

  • 头,身体,脚。当他们说“之后”时,并不意味着直接之后,而不是之前。

标签: html


【解决方案1】:

Before HTML5<tfoot> 必须在 <thead> 之后和 <tbody> 之前。使用HTML5<tfoot> 可以在<tbody> 之前或之后。但<table> 元素必须只有一个<tfoot> 子元素,并且必须在<thead> 之后。

【讨论】:

  • 对于不倾向于进一步滚动的读者:截至 2015 年 12 月,该规范不再允许 HTML5 之前的行为 due to accessibility issues(此更改反映在 W3C HTML 5.1 及更高版本中),并且验证器现在通过在具有活动 doctype 的文档中遇到 tfoot 之后的 tbody 时发出错误来强制执行此操作。
【解决方案2】:

根据 W3 规范,tfoot 必须在 tbody 之前。 (此处的规格链接 -> Why do internal TABLE sections have to go THEAD TFOOT TBODY to validate?

这样做是为了允许先加载表格的页眉和页脚,然后再加载可变数量的正文数据,否则可能会阻止表格页脚的加载。

【讨论】:

  • 我也喜欢@Alohci 的回答。
  • 根据 W3 规范,在 HTML5 中,它也可能在 tbody 标记之后出现!这个问题是关于 HTML5 的。w3.org/TR/html5/tabular-data.html#the-tfoot-element
  • @Timo002,原始问题中的html5在哪里说明?我在 OP 中没有看到任何对 html5 的引用,只有“html”。我只在 Alochi 的回答中看到了对 html5 的引用。
【解决方案3】:

在 HTML 5.1 规范中,<tfoot> 只能出现在 <tbody> 之后。

按此顺序:可选的标题元素,后跟零个或多个 colgroup 元素,可选的后跟一个 thead 元素,后跟零个或多个 tbody 元素或一个或多个 tr 元素,可选的后跟一个 tfoot 元素,可选与一个或多个脚本支持元素混合在一起。

https://www.w3.org/TR/html51/tabular-data.html#tabular-data

【讨论】:

  • 您链接到的文档不支持您的说法,即<tfoot> 只能出现在<tbody> 之后。事实上,文档明确指出,如果元素 跟随 后有 <tbody> 标记,则可以省略结束 </tfoot> 标记。
  • @Paul Rowe:无论如何,现在每个已知的验证器在遇到跟随 tfoot 的 tbody 时都会发出错误。我怀疑关于结束标签的声明留在那里以适应遗留行为,即当一个 tbody 仍然可以跟随一个 tfoot 时。显然添加了限制due to accessibility issues that was causing