当包含元素具有clear属性时,Floated元素继承上边距

时间:2013-03-11 22:49:46

标签: css google-chrome css-float

当容器使用clear: both;(或左/右)时,我偶然发现了容器中浮动元素的错误。在Chrome(而不是Safari)中,第一个浮动元素的位置正确,但所有后续元素似乎都会继承父元素的上边距,从而将它们移出。

以下是有问题的代码:http://jsfiddle.net/peterjmag/3zJey/1/

尝试使用切换链接查看差异。另外,请在margin-top上尝试#product-listing的各种值。

对于那些使用其他浏览器的人来说,这就是我的小提琴(适用于Mac的Chrome 25.0.1364.160):

JSFiddle output screenshot

为什么clear: both;会在Chrome中导致此行为?根据the CSS 2.1 specclear属性应该只影响文档中较早出现的浮动元素,不在目标元素内。

(当然,我知道还有其他更优化的方法来清除文档中的前一个元素,这些元素不需要容器div上的明确属性 - 我只是想了解为什么会发生这种情况。)

1 个答案:

答案 0 :(得分:1)

这似乎确实是Chrome错误:Issue 178134: Floated elements render incorrectly when parent element has a clear property + a top margin。根据该报告,Chrome 27及以上版本不受影响。