fix #193: prevent scrollbar glitch on hold action ripple animation - #198
Merged
Conversation
…e proper overlay placement
ildar170975
approved these changes
Jun 16, 2026
Collaborator
|
Tested, seems to be OK! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The Problem:
When a user holds down on the card, a circular ripple animation (
<div class="action-handler-restriction-card">) is created and temporarily attached to the document body to visually indicate the interaction.In
src/action-handler-directive.ts, this element was styled withposition: absolute;and its position was set usingclientXandclientY(which are coordinates relative to the viewport).Because
position: absolute;positions the element relative to the document body, placing the ripple near the bottom or right edge of the screen could temporarily push the document's boundaries outward as it animated withscale(1). This mismatch between viewport coordinates and document positioning caused the browser to suddenly render scrollbars and shift the view until the animation completed and the element was hidden.The Solution:
I changed the positioning of the ripple element from
position: absolutetoposition: fixed.Since
position: fixedworks exactly with viewport coordinates (clientX/clientY) and is bound by the viewport edge, the ripple animation now correctly appears exactly where the user taps and will no longer artificially expand the document to cause random scrollbars.