我使用HTML表格来创建时间表。每行代表半小时,单元格可以使用rowspan
跨越多行。
有时候我有空tr
个元素,因为所有的插槽都是前一行的单元格。
在这种情况下,HTML validator抱怨:
由
tbody
元素建立的行组的行[N]没有单元格 从它开始。
当然,我可以删除那些空tr
并减少展开单元格的rowspan
值。但随后rowspan
值将不再单一地对应于单元格的持续时间。
因此,空tr
真的无效吗?为什么呢?
答案 0 :(得分:4)
根据当前的HTML规范,您无法在有效HTML文档的表格中拥有空行。
也许你正确应该能够,但规范目前明确表示你不能。因此,如果有人认为规范允许这样做,那么正确的做法是file an issue against the HTML Standard in its github tracker甚至是write a patch and open a PR for it。
具体来说,规范定义了以下错误情况:
https://html.spec.whatwg.org/multipage/tables.html#the-table-element
如果表中只有一个行或列包含没有锚定到它们的单元格的插槽,那么这就是表模型错误。
在Internet规范术语中,这是一个“规范”的权威声明,不能被其他任何内容忽略或覆盖。它表示硬性要求。
其他地方的规范说:
tr
元素:内容模型https://html.spec.whatwg.org/multipage/tables.html#the-tr-element 零个或多个td,th和脚本支持元素
但这实际上并不矛盾,与上面引用的“表模型错误”要求不冲突或取代或覆盖。事实上,正好相反 - “表模型错误”要求取代了另一部分中更为自由的要求(上文引用)有效tr
元素可以有零个或多个子元素
规范中任何更严格的要求总是取代或覆盖任何更自由的要求。
答案 1 :(得分:0)
在HTML规范的table model section中,您可以找到以下声明:
行通常对应于tr元素,但行组在末尾可能有一些隐含的行,在某些情况下涉及跨越多行的单元格。
但是,这对表格中间的空行不起作用,因为隐含的行只能在结尾处出现。
另一种可能性是在左侧添加一个带有<th>
元素的列,作为该行的标题。毕竟,用户可能想知道一个表行代表什么 - 正如您在此处告诉我们的那样。