放置一个div标签在th标签内是可以的吗?

15

我以前认为这不是个问题,但我的IDE似乎告诉我不同了。是否有任何浏览器无法正确渲染此内容?

使用Netbeans IDE 7.3。

谢谢。


为什么得到了5个赞的答案被删除了? - gloomy.penguin
因为有误,所以被取消了点赞 ;) - JFK
1
@iglo:是的,在th标签内放置div是安全的。请参考http://www.picssel.com/playground/jquery/divInsideTH_06dec13.html。 - JFK
不确定为什么它被删除了。难道不正确吗?我从未在任何浏览器中遇到过此问题。其他 IDE 是否也会在此处显示语法错误?很有趣,希望知道。 - Iglo
JKF,这对我来说解决了问题,谢谢。 - Iglo
2个回答

25
根据HTML5规范,这是绝对可以的。内容模型是对元素允许作为子元素/后代的内容的规范描述。对于元素,只允许以下标签:

内容模型:

流内容,但没有标题、页脚、分节内容或标题内容的后代,如果th元素是排序接口th元素,则不能有交互式内容后代。

标签是流内容的一个示例,因此应该能够通过验证。

将来,我想推荐W3C的验证器服务,它可快速检查您的HTML是否有效。在此示例中,它已经通过了验证。

<!DOCTYPE html>
<html>
<head><title>&nbsp;</title></head>
<body>
<table>
  <tbody>
    <tr>
      <th>
        <div></div>
      </th>
    </tr>
  </tbody>
</table>
</body>
</html>

奇怪的是它将table标签列为可接受的。你不会直接在table标签中放置一个div,但你可以将它放在未列出的td中。除非我对此有什么误解。 - Anil
规格说明书指出了建议使用的地点和时间,但并未表示其他用法是不正确的。 - JFK
3
问题是在th标签内部是否能使用div标签,而不是tr。尝试将其放在th标签内部进行测试,你会发现这样做没有问题。 - Alohci
2
@SlyRaskal - 你误解了规范对流内容的定义。它所说的是表格本身就是流内容(例如,表格可以作为 div 的子元素),而不是它可以有流内容的子元素。 - Alohci
1
@Qantas94Heavy - SlyRaskal 正在谈论表格元素。你是正确的。th 不是流内容,但它允许流内容子元素。"内容模型" 描述了一个元素允许的子元素和后代。 - Alohci
@Alohci:抱歉,我没有仔细阅读你的评论——以为是针对我的。 - Qantas 94 Heavy

4
<TD><TH> 中使用 <DIV> 是完全可以的,这是为了定位和布局的普遍需求。
例如,<TH> 不能设置 position:relative,但是 <DIV> 可以,从而使其成为一个定位容器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接