HTML CSS 布局与浮动元素的父级中断

HTML CSS Layout breaks with parent of floated elements

我正在编写自己的网站,运行遇到了一个问题,这是我以前从未遇到过的。

我使用包含 3 个 <div> 的父 <p>
第一个<div>float: left;,第二个是float: right;
第三个<div>包含clear: both;.

下面的代码是php:

如果我注释开始和结束 <p> </p> 标签,布局将完美运行。但是如果浏览器接收到 <p>,那么它会以某种方式将 <p> 变成 <p></p> 以及 </p> 变成 <p></p>

以下两张图片取自浏览器"inspectors" in IE和Chrome:

导致的问题p:first-child 没有应用到我的 <p> wich 包含 3 <div> 因为 3 <div>s 不再在 <p> 中,而是现在被 2 <p>s 包围。

这可能是一项功能,但我无法弄清楚它应该解决什么问题或如何控制它。
有什么想法吗?

The P element represents a paragraph. It cannot contain block-level elements (including P itself).

来源:http://www.w3.org/TR/html401/struct/text.html#h-9.3.1

一个解决方案是用 div

替换您的 p

<p> 标签允许的内容是短语内容。 Click here for more info

因此,<p><div></div></p> 无效 HTML 并且浏览器将尝试在 div 开始之前关闭 p 标签。 <p></p><div></div>.

如果您提供有效的结构,浏览器将按您期望的方式运行。

您可以在 <div> 中包含一个 <div>,因此如果您将 <p> 替换为 <div>,您将得到想要的结果。