Demo here: http://jsfiddle.net/sbel/sykrLf2u/6/ Steps to reproduce the problem: 1. Create an absolutely positioned element at left: 0. 2. Get offsetWidth of element. 2. Move element to left: .1px 3. Get offsetWidth of element. What is the expected behavior? The offsetWidths should match. What went wrong? When the element is positioned at .1px, it's offsetWidth is 1px larger. Notes: The demo comes from this SO post about the issue: http://stackoverflow.com/q/26124678 This bug is also present in Chrome, but not Firefox or IE. This bug will likely resolve itself if offsetWidth gains support for subpixel values. The Chrome team seems to be working on this, not sure if you guys are as well.
Also reported to Chromium: https://code.google.com/p/chromium/issues/detail?id=512307
Having offsetWidth return non-integral values (bug 132895) was a web-breaking change (bug 134651).
The chromium team has marked their version of this issue as a Won't Fix: https://code.google.com/p/chromium/issues/detail?id=512307#c5 eae@chromium.org: This is intentional as we snap elements to the pixel grid. The offset* properties return the snapped values and as such are dependent on the rendered size, and by extension, position. I don't like offsetWidth changing based on position, but their logic seems sound to me. Maybe it's best to bury the issue here as well.
Yes, agreed.