【发布时间】:2011-03-10 17:28:33
【问题描述】:
我在 WebKit 渲染浮动元素的宽度时遇到了一个错误,当它们有边距时。
以下在 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
我最重要的问题仍然存在:有没有办法解决这个错误?
【问题讨论】:
-
我只能通过暴力破解(使用 jquery/javascript)解决问题。而且你描述的更阴险,尝试一个 100 像素宽的 div,三个浮动 div 分别为 33%、33% 和 34%。然后把 div 做成不同的大小,看四舍五入的乐趣。