CSS Nested Floats&清除表现不一致

时间:2012-02-21 23:20:14

标签: css nested css-float clear

请参阅this jsFiddle example以供参考。

我们大多数人都非常熟悉一种简单的技术来获取CSS Colunms(2个div by-side site),其中包括浮动一个并使用margin& amp; width:auto之后是许多清算技巧之一。 (Exibit A @ jsFiddle Reference

这种技术运作良好,可以很好地适用于我个人认识的所有形式的清算:

    容器底部的
  • clear: both div
  • 容器
  • overflow: hidden
  • 容器的Clearfix

然而,当您知道左侧元素的宽度并希望正确的元素填满其余部分的容器时,这种简单的实现方法很有用。

这种技术在反向(float: right和使用margin-right)方面效果很好,但必须先将浮动(右)元素放在容器中,以便IE正确呈现。 (Exibit B @ jsFiddle Reference

但是,当我们处理嵌套清算时,我注意到了一个问题。 (Aka清除其中一个colunms)。

一旦我将一个清理容器放入未浮动的colunm (Exibit C& D),我注意到WebKit& Gecko浏览器。 清除元素被捕获在外部浮动上并从其父级清除浮动。

主浮点数在左侧时不会发生这种情况。 (Exibit E)

有没有办法解决这个问题,如果可能的话,我想继续在已知宽度列上使用float: right,这似乎有点奇怪,一个有效,另一个没有。

另外,奇怪的是,这在IE9中不是问题,(但在IE 6-8中)。

作为参考,这是jsFiddle的输出,由Windows 7 64bit上的Chrome 17.0.963.46呈现:

Render

任何想法?


编辑:我应该注意用overflow: hidden包装内部浮动似乎有效,但是它有它自己的复杂性(这样它基本上会破坏任何具有相对/绝对定位组件的东西, DHTML Dropdown等。并不总是一种可能的解决方案。

1 个答案:

答案 0 :(得分:0)

我可能会遗漏一些重要的东西......但这有用吗?

http://jsfiddle.net/mikecruz/8Hnjg/