Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Request for some information on inner workings #3

Open
Rayraz opened this issue Oct 13, 2020 · 0 comments
Open

Request for some information on inner workings #3

Rayraz opened this issue Oct 13, 2020 · 0 comments

Comments

@Rayraz
Copy link

Rayraz commented Oct 13, 2020

This isn't technically an issue with the library, but I couldn't find a more appropriate place for my questions. I hope you don't mind me asking them here.

I'm trying to port the scroll-chain solution used here into a project of my own which doesn't use Vue. I think I have everything replicated properly, but I'd like to understand a little more about how the internals of this tool work so I can write up some good unit tests.

If you have the time, I'd love a bit more insight. I think the questions below should cover everything I'd like to understand a bit better:

  1. It appears to me that touchmove events are only ever defaultPrevented if the very first touchmove event would drag the scroller past the minimum or maximum scroll offset. Is this correct? Does this behavior come with any caveats?

  2. It appears to me that once the first touchmove event is defaultPrevented, all subsequent touchmove events in the gesture are also defaultPrevented, regardless of the direction of the gesture. Is this required to deal with a particular browser's scroll-chaining implementation? Or is it an oversight or a deliberate simplification?

  3. What's the reason for adding an extra 0.5 pixels to the scrollLeft and scrollTop values?

  4. It appears that an axis is marked as 'significant' if the user dragged at least twice as many pixels along the significant axis compared to the insignificant axis. Is this a deliberate choice and if so, what's the reason for it?

  5. I noticed the script tries to prevent scroll-chaining by calling preventDefault on specific wheel/touch events as well as by applying the overscroll-behavior css style. Is there a reason for using both strategies rather than only using one or the other? Are there notable limitations to either implementation that are worth being aware of?

Thanks for taking the time to write this tool and I look forward to your feedback.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant