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

And*_*iga 9 css jquery google-chrome

我有简单的div标签,绝对定位在HTML文档中.当在Chrome中我确定了"正确"的CSS规则,以像素为单位的固定值,它的"左"的规则为"自动",然后随即使用jQuery的确定它的左侧位置,位置()方法,返回的值是什么这种:122.6363525390625.这同样适用于所述偏移()方法.

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

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

Jon*_*Jon 10

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

<div style="width: 111px">
    <div style="width: 50%"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

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

Chrome 使用子像素渲染,这就是您看到此行为的原因.

最后:我不确定为什么这会导致你出现问题,当然如果你想要四舍五入到你可以使用的自然数Math.round(x).