Bug 147136
Summary: | offsetWidth for fractionally positioned elements returns different values depending on left position | ||
---|---|---|---|
Product: | WebKit | Reporter: | Chad von Nau <chad> |
Component: | Layout and Rendering | Assignee: | Nobody <webkit-unassigned> |
Status: | RESOLVED WONTFIX | ||
Severity: | Normal | CC: | hyatt, simon.fraser, zalan |
Priority: | P2 | ||
Version: | 528+ (Nightly build) | ||
Hardware: | Mac | ||
OS: | OS X 10.10 | ||
URL: | http://jsfiddle.net/sbel/sykrLf2u/6/ |
Chad von Nau
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.
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Chad von Nau
Also reported to Chromium: https://code.google.com/p/chromium/issues/detail?id=512307
Simon Fraser (smfr)
Having offsetWidth return non-integral values (bug 132895) was a web-breaking change (bug 134651).
Chad von Nau
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.
Simon Fraser (smfr)
Yes, agreed.