来自 http://webdesign.about.com/od/htmltags/p/aadivtag.htm
在 HTML 4 中,DIV 元素不能位于另一个块级元素内,例如 P 元素。但是,在 HTML5 中可以在内部找到 DIV 元素,并且可以包含其他流内容元素,如 P 和 DIV。
我在表格中有这样的东西
<p> <label...> <input...> </p>
但是当 Rails 自动生成一个包含输入的 error_explanation div 时,一段变成两段,我在 Firebug 中看到了这一点:
<p> <label...> </p> <div...> <input...> </div> <p> </p>
另外,如果我只是添加一个简单的
<p> <div> test </div> </p>
发生同样的问题( JSFiddle )并且它在 DOM 中呈现为
<p> </p> <div> test </div> <p> </p>
为什么?
后来我给文章的作者发了电子邮件,她做了适当的修改。
原文由 Steve 发布,翻译遵循 CC BY-SA 4.0 许可协议
从 精细规格:
这个 短语内容 是什么?
措辞内容:
普通字符数据 就是:未标记的文本。 措辞要素 有:
因此,
<p><div></div></p>
不是有效的 HTML。根据规范中列出的标签遗漏规则,<p>
标签自动关闭<div>
标签,留下</p>
没有匹配的<p>
。浏览器完全有权尝试通过在 --- 之后添加一个开放的<div>
<p>
标签来纠正它:您不能将
<div>
放入<p>
并从各种浏览器获得一致的结果。为浏览器提供有效的 HTML,它们会表现得更好。You can put
<div>
inside a<div>
though so if you replace your<p>
with<div class="p">
and style it appropriately, you can get what you想。您在 about.com 上的参考与 w3.org 上的规范不一致。你的参考误导了你。