Scroll-snap on screen-height blocks results in slow, broken, non-snapped scrolling
Categories
(Core :: Panning and Zooming, defect, P3)
Tracking
()
People
(Reporter: Nick, Assigned: hiro)
References
(Regression)
Details
(Keywords: regression)
Attachments
(1 file)
User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0
Steps to reproduce:
Repeatedly scroll forward and backward through the scroll snap slides at either the Codepen or JSFiddle below.
https://jsfiddle.net/kn7vgLht/
https://codepen.io/argyleink/pen/jOzGJej
Actual results:
After a few transitions, intermittent freezing mid-transition occurs. It then requires several scroll actions to proceed, far more than would be needed even with unsnapped blocks.
Screen-recorded demonstration: https://youtu.be/LzncbRONy5E
NOTE: Similar but not identical janky behavior occurs on Firefox for Android as well, so this problem may not be due to PC-specific code.
Expected results:
It should have transitioned fully and smoothly between every pair of slides with only one scroll event.
Reporter | ||
Comment 1•1 year ago
|
||
Note: I have also experienced this same bug in Windows on this same PC, so it is not a Linux-specific issue.
More details than can be fit into the format of a bug report can be found on my SO post.
Updated•1 year ago
|
Reporter | ||
Comment 2•1 year ago
|
||
CORRECTION:
The JSFiddle used incorrect CSS. Here is the corrected JSFiddle.
The Codepen was correct. The bug is still present in both after correction.
Comment 3•1 year ago
|
||
The severity field is not set for this bug.
:hiro, could you have a look please?
For more information, please visit BugBot documentation.
Assignee | ||
Comment 4•1 year ago
|
||
Probably regressed by bug 1780701.
Comment 5•1 year ago
|
||
The severity field is not set for this bug.
:hiro, could you have a look please?
For more information, please visit BugBot documentation.
Assignee | ||
Comment 6•1 year ago
•
|
||
The issue happens when we received a new wheel event while a Smooth(Msd) animation triggered by scroll-snap is running. So what happens exactly is;
- A wheel event happens
- The event triggers a Smooth(Msd) animation here and its destination is 600, for example
- A new wheel event happens during the animation is running
- Since bug 1780701, we don't return valid snap position from this MaybeAdjustDeltaForScrollSnappingOnWheelInput call because the destination (600) is same
- Then unfortunately due to the Smooth(Msd) animation,
mState
is not WHEEL_SCROLL, thus we fall into this if block useinitialPosition
which is not factored into the previous animation state
So probably we need to tell whether there's the previous smooth animation triggered by the previous snap, and if there is, we need to bail out.
Comment 7•1 year ago
|
||
Set release status flags based on info from the regressing bug 1780701
Updated•1 year ago
|
Comment 8•1 year ago
|
||
:hiro any plan on working on this or should we stop tracking it?
Assignee | ||
Comment 9•1 year ago
|
||
Yeah we should stop tracking, it's not a recent regression and I don't have cycles to work on this soon.
Assignee | ||
Comment 10•5 days ago
|
||
I think this bug has been fixed by bug 1922904.
Reporter | ||
Comment 11•5 days ago
|
||
(In reply to Hiroyuki Ikezoe (:hiro) from comment #10)
I think this bug has been fixed by bug 1922904.
Bless and thank you!
Assignee | ||
Comment 12•5 days ago
|
||
(I forgot closing)
Updated•3 days ago
|
Description
•