css - 清除子 float 而不清除 'external' float

标签 css clearfix

清除一组 float 的最流行方法是在父元素的 :after 伪元素上使用 clear:both;。例如这个:

.group:after {
    visibility: hidden;
    display: block;
    content: "";
    clear: both;
    height: 0;
    }
* html .group             { zoom: 1; } /* IE6 */
*:first-child+html .group { zoom: 1; } /* IE7 */

这在大多数情况下工作正常,但当 float 元素内有 float 元素时,它会失败。 它清除所有 float ,而不仅仅是子 float 。

解决该问题的一种可能方法是添加

.group {
    display:inline-block;
}

但这可能会产生不必要的副作用。

有没有办法只清除子 float ,而不是页面上的每个 float ?

最佳答案

我清除 float 的首选方法实际上是将包含元素的 overflow 属性设置为 auto:

.group {
    overflow: auto;
}

overflow:hidden 也可以工作。

这将强制 .group 清除所有 float 子项,但不会清除页面上的任何其他 float 项。我认为这可能就是您想要实现的目标?

有时此方法不会强制旧版本的 IE 清除 float (抱歉,我记不清具体是哪个版本的 IE),在这种情况下,您需要强制 IE 的 haslayout 。在 .group 上设置显式宽度就可以了。但在大多数情况下,我发现这种方法“有效”。

这是一个演示:http://jsfiddle.net/C7KWn/

关于css - 清除子 float 而不清除 'external' float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11024867/

相关文章:

html - 容器不随内容扩展

css - 我可以使用 ‘clearfix’ 的哪些方法?

css - clearfixed 元素之上的 float 元素

html - Clearfix 不适用于固定宽度的列

css - 层类型边界与 css3

jQuery Mobile Beta 2 - 选项标签选择问题(视觉)

html - 堆积 flex 元素

javascript - 从屏幕外动画一个 div,没有绝对位置?

Firefox 2 和 SeaMonkey 的 CSS clearfix 问题

php - Bootstrap 网格未正确对齐