关于css:这两种修复折叠式父级与浮动子级的方法是一样的,但为什么呢?

These two methods of fixing the collapsed-parent with floating children are the same, but why?

这里描述了许多方法来修复折叠到小于其浮动子级的父级。

解决方案2添加了一个clear:both样式的DIV,作为崩溃的父代中的最后一个子代。解决方案3使用一个伪元素在折叠父元素之后添加一个clear:both样式的内容位。

添加EDOCX1[0]与在折叠父对象内部或之后添加EDOCX1[0]是如何相同的?如果它是相同的,为什么不将解决方案2中的DIV也添加到父级之后呢?


:after也在元素内部。:after:before伪类在所选元素内容之前或之后添加一个伪元素。

示例:http://jsfiddle.net/ucdea/1/

但我的首选解决方案是,您在这里没有提到的是给包含浮动元素的元素一个溢出、自动或隐藏…


How is adding clear:both the same whether you add it inside or after the collapsing parent?

两者都将其添加到折叠的父级中。:before:after伪元素总是在父元素内部生成内容。由于:after实际上意味着作为最后一个子级生成内容,这使得解决方案3在这方面与解决方案2相同,关键区别在于2使用HTML,而不是3使用CSS解决方案。

And if it's the same, why not just add that div from Method 1 after the parent, too?

因为额外的标记被认为是代码味道。(但就个人而言,我发现伪元素方法也是如此。)

解决方案4,即在父元素本身上使用overflow属性,是我通常使用的方法。实际上,所有这些都是间接的解决方案,并不是为了解决浮动的父级崩溃的问题,但是考虑到浮动的性质,这是我们所能得到的最好的解决方案。