Proposed changes to -ms-scroll-chaining (Re: Scroll focus when reaching the end of a scrollable element)

> On Tue, Sep 23, 2014 at 7:21 AM, Rick Byers <rbyers@chromium.org> wrote:
> > IE has -ms-scroll-chaining for precisely this problem.  Does that do
> > everything you'd want?

> Yes, that's the ticket. One note: -ms-scroll-chaining only applies to
> touch-based devices. I'd hope this would apply to mouse-based browsers as
> well.

I think the proposal here make sense. Rick was concerned that this may need
to be limited to statefull scroll input (touch/touchpad) but I don't see
any reason
why that should be a problem given that -ms-scroll-chaining is limited to
scrolls
propagating upward to the nearest scrollable parent.

So I propose to adopt -ms-scroll-chaining with the following changes:

1. scroll-chaining should apply to all user input scrolls including mouse,
   touch, keyboard.  Programmatic scroll APIs such as
Element::scrollIntoView
   are not affected by this.

2. Introduce long hands syntax scroll-chaining-{x,y} to allow scroll
chaining to
   be controlled  independently for each axis. For example a component
which
   does not overflow horizontally should not prevent propagation on that
axis
   if it only needs to prevent the vertical propagation.

Optional 3. Define what happens if scroll-chaining is disabled on the
viewport.
  I think a sensible choice here is to take it as meaning to prevent
  user-agent default overscroll actions such as overscroll swipe
navigations
  and pull-to-refresh. I have proposed to do this as part of viewport meta
[1]
  but this may be an even better solution.


I have a more detailed proposal with some additional suggestions on WICG
[1] but
some of the suggestions there are slightly off topic for this thread.

Thanks
Majid

[1] https://github.com/w3c/csswg-drafts/issues/455
[2]
https://discourse.wicg.io/t/generic-scroll-chaining-prevention-mechanism-or-expand-standardize-ms-scroll-chaining/1811

Received on Thursday, 10 November 2016 16:28:07 UTC