为什么我不能将h2放在表格单元格内? (在Chrome和FF上测试)
<table>
<tr>
<td>
<p>
<h2>Header</h2>
test123
</p>
</td>
</tr>
</table>
段落内容跳转到td,p变为空:
答案 0 :(得分:2)
答案 1 :(得分:1)
p
的内容模型仅允许“内联”或“文本级”内容。确切的内容模型(和术语)因HTML版本而异,但没有版本将h2
视为内联/文本级别。参见例如HTML 4.01 spec text on the p
element。如果你在HTML中用它的旧含义来考虑p
,那么这个要求是相当自然的:它标记了一段文字。它基本上是一个复制文本块。
内容模型由浏览器通过解析规则强制执行:当p
元素打开时,<h2>
标记会隐式关闭它。因此,在问题中给出的情况下,td
元素包含一个p
元素,只有空格作为内容,然后是h2
元素,然后是“松散”文本(只是一个文本节点) )。
结论取决于您希望将单元格内容包装在p
元素中的原因。通常情况下,没有理由这样做。但是如果你需要一个包装器,请使用div
元素。
答案 2 :(得分:0)
除非故意将其作为标题,否则您可以将文本改为粗体:
<table>
<tr>
<td>
<p>
<strong>Header</strong><br>
test123
</p>
</td>
</tr>
</table>
或者,正如@ Epsil0neR所说,使用<h2>
段之外的<p>
标题