Summary: | static position of abspos element at the end of a single-line shrinkwrapped container is incorrect | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | jasneet <jasneet> | ||||||||||
Component: | CSS | Assignee: | Robert Hogan <robert> | ||||||||||
Status: | RESOLVED DUPLICATE | ||||||||||||
Severity: | Normal | CC: | eric, jasneet, ojan.autocc, pravind.2k4, robert, tabatkins, webkit.review.bot | ||||||||||
Priority: | P2 | Keywords: | HasReduction | ||||||||||
Version: | 525.x (Safari 3.1) | ||||||||||||
Hardware: | PC | ||||||||||||
OS: | Windows XP | ||||||||||||
URL: | http://skyrock.com/ | ||||||||||||
Attachments: |
|
Description
jasneet
2008-03-25 16:43:49 PDT
Created attachment 20057 [details]
screenshot
Created attachment 20058 [details]
reduction
Yup, valid bug. The error is that, if an inline element is the last thing in a single-line shrinkwrapped container, when you position the inline its static position is instead computed as if it linewrapped onto a second line. Here's a testcase: <!DOCTYPE html> <div id=wrapper> <div id=inline></div><div id=inline-positioned></div> </div> <div id=cover></div> <style> body { margin: 0; } #wrapper { float: left; } #inline { display: inline-block; width: 50px; height: 20px; background: green; } #inline-positioned { display: inline-block; width: 50px; height: 20px; background: red; position: absolute; } #cover { position: absolute; top: 0; left: 50px; width: 50px; height: 20px; background: green; } </style> (In reply to comment #3) > Yup, valid bug. The error is that, if an inline element is the last thing in a single-line shrinkwrapped container, when you position the inline its static position is instead computed as if it linewrapped onto a second line. > > Here's a testcase: > > <!DOCTYPE html> > <div id=wrapper> > <div id=inline></div><div id=inline-positioned></div> > </div> > <div id=cover></div> > <style> > body { margin: 0; } > #wrapper { > float: left; > } > #inline { > display: inline-block; > width: 50px; > height: 20px; > background: green; > } > #inline-positioned { > display: inline-block; > width: 50px; > height: 20px; > background: red; > position: absolute; > } > #cover { > position: absolute; > top: 0; > left: 50px; > width: 50px; > height: 20px; > background: green; > } > </style> > The above test case is a little different from the one jasneet has reported. If you move the <style> stuff above the first <div> there will be no red box seen. Your test case exposes another bug , that for positioned objects the renderers are not properly re-attached. See https://bugs.webkit.org/show_bug.cgi?id=91665 Created attachment 153098 [details]
Reduction
Created attachment 179093 [details]
Patch
*** This bug has been marked as a duplicate of bug 45274 *** Here's the reduction without any collapsing space. It passes. data:text/html,<!DOCTYPE html><style>body { margin: 0; }#wrapper {float: left;}#inline {display: inline-block;width: 50px;height: 20px;background: green;}#inline-positioned {display: inline-block;width: 50px;height: 20px;background: red;position: absolute;}#cover {position: absolute;top: 0;left: 50px;width: 50px;height: 20px;background: green;}</style><div id=wrapper><div id=inline></div><div id=inline-positioned></div></div><div id=cover></div> So this the same issue as bug 45274. |