RESOLVED FIXED 147284
Incorrect position: fixed; rendering when child of position:relative/sticky.
https://bugs.webkit.org/show_bug.cgi?id=147284
Summary Incorrect position: fixed; rendering when child of position:relative/sticky.
Chris Rebert
Reported 2015-07-24 17:35:32 PDT
Created attachment 257494 [details] Screenshot of incorrect Safari rendering OS X Safari version: 8.0.7 (10600.7.12) WebKit Nightly version: r186963 OS X version: Yosemite iOS version: 8.4 Possibly related to: https://bugs.webkit.org/show_bug.cgi?id=122878 Original Bootstrap issue: https://github.com/twbs/bootstrap/issues/16814 It seems that WebKit/Safari places position:fixed elements incorrectly when they do not have a left/right/top/bottom property set on them and are a child of an element that is position:relative;left:X%; See the attached screenshots. Safari renders the example differently from Chrome. IE11 and Firefox give the same result as Chrome. To reproduce: 1. Open http://jsbin.com/rohemer in OS X Safari or iOS Safari. 2. Look at the red paragraph's text. Actual result: The red paragraph's text doesn't quite make sense, because part of it isn't visible. Expected result: The red paragraph's text makes sense because all of its text is visible.
Attachments
Screenshot of incorrect Safari rendering (130.03 KB, image/png)
2015-07-24 17:35 PDT, Chris Rebert
no flags
Screenshot of correct rendering from Chrome for comparison (206.52 KB, image/png)
2015-07-24 17:42 PDT, Chris Rebert
no flags
Copy of testcase webpage (in case JS Bin goes down) (1.34 KB, text/html)
2015-07-24 17:44 PDT, Chris Rebert
no flags
Test reduction (169 bytes, text/html)
2016-01-03 08:06 PST, zalan
no flags
Patch (12.12 KB, patch)
2016-01-04 16:24 PST, zalan
no flags
Patch (14.97 KB, patch)
2016-01-07 10:24 PST, zalan
no flags
Chris Rebert
Comment 1 2015-07-24 17:42:31 PDT
Created attachment 257495 [details] Screenshot of correct rendering from Chrome for comparison
Chris Rebert
Comment 2 2015-07-24 17:44:42 PDT
Created attachment 257496 [details] Copy of testcase webpage (in case JS Bin goes down)
Chris Rebert
Comment 3 2015-07-24 17:59:34 PDT
Also filed a Radar for this: <rdar://problem/21993128>
Simon Fraser (smfr)
Comment 4 2015-07-25 09:09:11 PDT
Only happens when the position:fixed has 'auto' left.
zalan
Comment 6 2016-01-03 08:06:44 PST
Created attachment 268137 [details] Test reduction
zalan
Comment 7 2016-01-04 16:24:54 PST
Simon Fraser (smfr)
Comment 8 2016-01-04 17:08:32 PST
Comment on attachment 268247 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=268247&action=review > Source/WebCore/rendering/RenderBox.cpp:3358 > + const auto& renderBox = downcast<RenderBox>(*current); > + staticPosition -= renderBox.logicalLeft(); > + if (renderBox.isInFlowPositioned()) > + staticPosition -= renderBox.relativePositionOffset().width(); Would it make sense to have an accessor that return renderBox.logicalLeft() + renderBox.relativePositionOffset().width() for in-flow-positioned?
zalan
Comment 9 2016-01-07 10:24:14 PST
WebKit Commit Bot
Comment 10 2016-01-07 12:01:40 PST
Comment on attachment 268466 [details] Patch Clearing flags on attachment: 268466 Committed r194710: <http://trac.webkit.org/changeset/194710>
WebKit Commit Bot
Comment 11 2016-01-07 12:01:47 PST
All reviewed patches have been landed. Closing bug.
Chris Rebert
Comment 12 2016-01-07 14:32:42 PST
zalan
Comment 13 2016-01-07 14:36:04 PST
(In reply to comment #12) > Thank you! > Removed the entry from Bootstrap's wall: > https://github.com/twbs/bootstrap/commit/ > 6ab9e10efa9b3a195d5df26d9b901deaa3437cad Thanks for reporting it!
Note You need to log in before you can comment on or make changes to this bug.