为什么jQuery的position()和offset()方法在Chrome中返回小数?

时间:2012-06-22 06:19:35

标签: jquery css google-chrome

我有简单的div标签,绝对定位在HTML文档中。 在Chrome中,我将其“正确”的CSS规则设置为固定值(以像素为单位),将其“左”规则设置为“自动”,然后立即使用jquery的 position()方法确定其左侧位置,返回的值是这样的: 122.6363525390625 offset()方法也是如此。

另一方面,Firefox没有这个问题。

你能告诉我为什么会这样,有没有办法阻止它? 提前谢谢!

2 个答案:

答案 0 :(得分:10)

因为当你使用百分比宽度时,数学就是这样做的。想象一下,你有这个布局:

<div style="width: 111px">
    <div style="width: 50%"></div>
</div>

内部元素的宽度计算为55.5像素,而不是自然数。根据确切的CSS属性,这可以很容易地计算到更多的小数位。

Chrome uses subpixel rendering,这就是您看到此行为的原因。

最后:我不确定为什么会导致您出现问题,但当然如果您想要使用自然数字,您可以使用Math.round(x)

答案 1 :(得分:-3)

在Chrome中,值会被截断,因此120,120.5和120.6都显示相同的宽度,因此您无需担心使用十进制值。没有什么像.5像素。像素是整个单位。如果你确实有这个函数返回十进制值的问题那么为什么不使用parseInt?您不应该将此内容留给浏览器来处理,否则您的页面可能会中断。