我发现WebKit在渲染带有边距的浮动元素宽度时出现了bug。
以下代码在Firefox(3.6)和WebKit(Chromium 5.0)中都能正常渲染:
<div style="width: 100%; background-color: green;">
<div style="background-color: red; float: left; width: 50%;">n</div>
<div style="background-color: red; float: left; width: 50%;">n</div>
<div style="clear: both;"></div>
</div>
也就是说,完全是红色的盒子,没有显示绿色背景。
现在试试这个:
<div style="width: 100%; background-color: green;">
<div style="background-color: red; float: left; width: 40%; margin-left: 10%;">n</div>
<div style="background-color: red; float: left; width: 50%;">n</div>
<div style="clear: both;"></div>
</div>
期望的结果与以前相同,除了左侧10%的方框保留为绿色,在Firefox中看到这种情况。然而,在WebKit浏览器上,右侧会留下一像素的绿色:浮动元素不再完全填满它。当使用更多的浮动元素和边距时,问题似乎会加剧,留下更多未填充的空间。这是一个错误吗?舍入误差吗?这肯定不是我预期的结果。更重要的是,有什么办法可以解决这个问题吗?编辑:经过大量搜索,我发现这是一个已报告的错误;可能是一个舍入误差,正如我们所怀疑的:https://bugs.webkit.org/show_bug.cgi?id=5531。我的最重要的问题仍然存在:有没有办法绕过这个错误?