当容器使用clear: both;
(或左/右)时,我偶然发现了容器中浮动元素的错误。在Chrome(而不是Safari)中,第一个浮动元素的位置正确,但所有后续元素似乎都会继承父元素的上边距,从而将它们移出。
以下是有问题的代码:http://jsfiddle.net/peterjmag/3zJey/1/
尝试使用切换链接查看差异。另外,请在margin-top
上尝试#product-listing
的各种值。
对于那些使用其他浏览器的人来说,这就是我的小提琴(适用于Mac的Chrome 25.0.1364.160):
为什么clear: both;
会在Chrome中导致此行为?根据the CSS 2.1 spec,clear
属性应该只影响文档中较早出现的浮动元素,不在目标元素内。
(当然,我知道还有其他更优化的方法来清除文档中的前一个元素,这些元素不需要容器div上的明确属性 - 我只是想了解为什么会发生这种情况。)
答案 0 :(得分:1)
这似乎确实是Chrome错误:Issue 178134: Floated elements render incorrectly when parent element has a clear property + a top margin。根据该报告,Chrome 27及以上版本不受影响。