[csswg-drafts] [cssom][css-overflow][css-overscroll-behavior] overscroll-behavior and underspecification of "not user scrollable but with scrolling mechanism" as "always considered to be at the scroll boundary"

jonjohnjohnson has just created a new issue for https://github.com/w3c/csswg-drafts:

== [cssom][css-overflow][css-overscroll-behavior] overscroll-behavior and underspecification of "not user scrollable but with scrolling mechanism" as "always considered to be at the scroll boundary" ==
In [Overscroll Behavior](https://wicg.github.io/overscroll-behavior/#scroll-chaining-and-boundary-default-actions)
> **Scroll boundary** refers to when the scroll position of a scroll container reaches the edge of the scrollport. If a scroll container has no potential to scroll, because it does not overflow in the direction of the scroll, the element is always considered to be at the scroll boundary.

In [CSS-overflow](https://drafts.csswg.org/css-overflow-3/#valdef-overflow-visible)
> **visible** - There is no special handling of overflow, that is, the box’s content is rendered outside the box if positioned there. The box is not a scroll container.

With all other values making the element a **scroll container**, even if "not user scrollable".

In this test case, the *possible confusion may be what caused the buggy implementations in both currently supported vendors, with blinks is only an edge case.
#### Test only in chrome and firefox - http://jsbin.com/heledeg/2
1. Make sure your window is taller than 550px and navigate to the demo.
2. Scroll vertically, anywhere on screen, even the "fixed" block in the lower left.
3. Resize your window to be smaller than 500px, now causing the fixed block to be "user scrollable".
4. See how scrolling doesn't "chain" out.
5. Now resize your browser, making it taller again.
6. For chrome, if you then **immediately** try to scroll the fixed block, it's as if the scroll event is captured with `e.preventDefault()`.
7. For firefox, until you thrash the layout, you're forever stuck without "scroll chaining" within the fixed block.

_Sidenote - Blink allows spatial keys to chain from focus within `overscroll-behavior: contain`, while firefox does not._

The terminology around "an element that provides user scrollability" is at worst, undefined, and at best, seemingly obtuse.

The lack of clear language for an element with "a scrolling mechanism" that cannot be scrolled by what would be non-programmatic user interactions leads to incompatibility, bugs, and developer confusion with regards to issues like [#865 - "support position:sticky inside an overflow:hidden|auto on general parents"](https://github.com/w3c/csswg-drafts/issues/865) or [#1522](https://github.com/w3c/csswg-drafts/issues/1522)

- [WICG Overscroll Behavior](https://wicg.github.io/overscroll-behavior/)
- [#2179 - Move overscroll-behavior spec](https://github.com/w3c/csswg-drafts/issues/2179)

_(Also, beyond terminology, the spec has grammatical errors such as "A infinite scrollers loads more content as user reaches...")_

Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/2567 using your GitHub account

Received on Saturday, 14 April 2018 09:16:48 UTC