Bug 147284

Summary: Incorrect position: fixed; rendering when child of position:relative/sticky.
Product: WebKit Reporter: Chris Rebert <webkit>
Component: CSSAssignee: zalan <zalan>
Status: RESOLVED FIXED    
Severity: Normal CC: commit-queue, esprehn+autocc, glenn, hyatt, joepeck, kondapallykalyan, simon.fraser, webkit-bug-importer, zalan
Priority: P2 Keywords: HasReduction, InRadar, W3CTest
Version: WebKit Nightly Build   
Hardware: All   
OS: All   
URL: http://jsbin.com/rohemer/edit
Bug Depends on:    
Bug Blocks: 159753    
Attachments:
Description Flags
Screenshot of incorrect Safari rendering
none
Screenshot of correct rendering from Chrome for comparison
none
Copy of testcase webpage (in case JS Bin goes down)
none
Test reduction
none
Patch
none
Patch none

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.