为什么 <p> 标签中不能包含 <div> 标签?

新手上路,请多包涵

据我所知,这是正确的:

 <div>
  <p>some words</p>
</div>

但这是错误的:

 <p>
  <div>some words</div>
</p>

第一个可以通过 W3C 验证 程序 (XHTML 1.0),但第二个不能。我知道没有人会像第二个那样编写代码。我只想知道为什么。

那么其他标签的包含关系呢?

原文由 Henry H Miao 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 413
2 个回答

查找允许的包含关系的权威位置是 HTML 规范。例如,参见 http://www.w3.org/TR/html4/sgml/dtd.html 。它指定哪些元素是块元素,哪些是内联元素。对于这些列表,搜索标记为“HTML 内容模型”的部分。

对于P元素,它指定如下,表示P元素只允许包含行内元素。

 <!ELEMENT P - O (%inline;)*            -- paragraph -->

这与 http://www.w3.org/TR/html401/struct/text.html#h-9.3.1 一致,其中指出 P 元素“不能包含块级元素(包括 P 本身)”。

原文由 Colin Campbell 发布,翻译遵循 CC BY-SA 3.0 许可协议

In short, it is impossible to place a <div> element inside a <p> in the DOM because the opening <div> tag will automatically close the <p> 元素。

原文由 defau1t 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题