WebKit 的百分比浮动错误:有啥解决方法吗?

Posted

技术标签:

【中文标题】WebKit 的百分比浮动错误:有啥解决方法吗?【英文标题】:WebKit's percent-sized floats bug: are there any workarounds?WebKit 的百分比浮动错误:有什么解决方法吗? 【发布时间】: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 做成不同的大小,看四舍五入的乐趣。 【参考方案1】:

我怀疑这没有什么神奇的解决方法。浏览器以不同的数学方式解释大小。还有一个与这个here 稍微相关的问题,就是我遇到的特殊问题。有更广泛的信息here。我曾经读过一篇很好的文章,非常准确地解释了这个问题,但我丢失了书签。我会尝试重新找到它,以便我可以在这里发布。

本质上,不同的浏览器以不同的方式舍入十进制像素值。因此,简短的回答是,只要存在这种差异,您就永远不会获得精确的跨浏览器解决方案。我遇到的特殊问题是我的第一个链接中描述的问题:即使不使用百分比值(固定像​​素大小),我也遇到了浏览器之间的 2 个“边”,其中某些元素的垂直对齐方式会有所不同:Firefox 和 Internet Explorer , 一方面是 Opera、Chrome 和 Safari。

然而,这取决于我使用的 line-height 和 font-size 的确切值,所以有时我会在 Firefox 和 IE 或其他组合之间得到差异。如果不使用条件 CSS,我只能将问题减少到这 2 组,然后在 Opera 和 Chrome 中使用条件 CSS 调整边距。

所以,总而言之,据我所知,恐怕您必须使用条件 CSS。干杯!

【讨论】:

【参考方案2】:

也许是这样的?

<div style="width: 100%;">
    <div style="background-color: green; float: left; width: 10%;"></div>
    <div style="background-color: red; float: left; width: 40%;">n</div>
    <div style="background-color: red; float: left; width: 50%;">n</div>
    <div style="clear: both;"></div>
</div>

【讨论】:

以上是关于WebKit 的百分比浮动错误:有啥解决方法吗?的主要内容,如果未能解决你的问题,请参考以下文章

有啥方法或方法可以找出我的错误以获取此命令的解决方案吗?

Flex-grow 不尊重边界框。错误与否?以及有啥办法克服吗?

Chrome/Safari/Webkit 上的额外填充——有啥想法吗?

怎么解决使用float浮动的时候元素不占高度的问题

有啥方法可以让 <tr> 浮动以实现响应式表格布局?

Chrome(webkit)中浮动元素中的用户文本选择选择更多文本[关闭]