Bug 156435

Summary: composited scrolling interferes with the propagation of perspective
Product: WebKit Reporter: vollick
Component: CompositingAssignee: Simon Fraser (smfr) <simon.fraser>
Status: RESOLVED FIXED    
Severity: Normal CC: aghassemi+bugzilla, ajuma, changseok, esprehn+autocc, ews-watchlist, fred.wang, glenn, koivisto, kondapallykalyan, me, pdr, simon.fraser, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: Safari 9   
Hardware: iPhone / iPad   
OS: Unspecified   
See Also: https://bugs.webkit.org/show_bug.cgi?id=211916
Attachments:
Description Flags
Patch koivisto: review+

vollick
Reported 2016-04-09 09:05:52 PDT
Try visiting https://output.jsbin.com/muqaqejafi Clicking the button toggles -webkit-overflow-scrolling : touch/auto. When touch is selected, perspective from the scroller is not applied to the background as per my understanding of the TR transform spec and parallax fails. This appears to be the source of some pain in the wild (https://css-tricks.com/forums/topic/parallax-scrolling-that-actually-works-on-ipad/). I'm not aware of a way to get both fling and parallax on an overflow scroller on iOS without resorting to JS (is there a way?). Unrelated: it is difficult to click the button on iOS without being scrolled to the top. Could the scrolled content be interfering with hit testing, despite the scroll clip?
Attachments
Patch (12.24 KB, patch)
2020-05-13 11:14 PDT, Simon Fraser (smfr)
koivisto: review+
Radar WebKit Bug Importer
Comment 1 2016-04-09 11:03:23 PDT
Jayden Seric
Comment 2 2019-10-29 18:08:58 PDT
Simon Fraser (smfr)
Comment 3 2019-10-29 18:25:27 PDT
*** Bug 164949 has been marked as a duplicate of this bug. ***
Simon Fraser (smfr)
Comment 4 2020-05-13 11:04:42 PDT
*** Bug 211851 has been marked as a duplicate of this bug. ***
Simon Fraser (smfr)
Comment 5 2020-05-13 11:14:49 PDT
Antti Koivisto
Comment 6 2020-05-13 11:21:43 PDT
Comment on attachment 399281 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=399281&action=review > Source/WebCore/rendering/RenderLayerBacking.cpp:691 > + auto layerForChildrenTransform = [&]() { Unnecessary () > Source/WebCore/rendering/RenderLayerBacking.cpp:706 > + perspectiveRelativeBox = borderBoxRect; > + return m_graphicsLayer.get(); > + }; > + > + auto* layerForPerspective = layerForChildrenTransform(); If you wanted to be fancy you could return both perspectiveRelativeBox and layer together with something like return std::make_tuple(m_graphicsLayer.get(), borderBoxRect); } auto [layerForPerspective, perspectiveRelativeBox] = layerForChildrenTransform()
Simon Fraser (smfr)
Comment 7 2020-05-13 12:01:26 PDT
Note You need to log in before you can comment on or make changes to this bug.