WICG / overscroll-scrollend-events

Description of overscroll and scrollend events
MIT License
18 stars 10 forks source link

Overscroll Customization

Overscroll customization refers to a set of scrolling events that can be used in the overscrolling scenarios. This repository contains an explainer and a proposed specification for a new scroll events called overscroll and scrollend to address the need for customizing overscroll and complete the existing scroll event and expose more information to the content that is being scrolled.

If the incubation around this API is successful (e.g. is shipped by multiple browsers) then this spec hopefully will transition to W3C CSS specification.

Problem

With CSS overscroll behavior property can prevent user-agent defined default boundary actions. Overscroll affordance (e.g. rubber-banding or glow effect), pull to refresh, and history swipe navigation are examples of those default boundary actions.

However, in order to implement customized behaviors, they still need to register a combination of scroll, touch, and wheel event listeners to find out when overscrolling has started and trigger their customized scroll boundary behavior. This approach has the following disadvantages/limitations:

Solution

We are proposing two new event types:

Note that during scroll, developers can always check the offset of the scrolling element to get what they need. But that is not the case for the overscrolling case as the offset of the scrolling element remain the same. For that we need to also expose deltaX and deltaY attributes on overscroll event to indicates how much the element has overscrolled. You can look at the exact idl in the proposed specification.

Feature Detection

These events can be detected by the existence of their global listeners.

  if (window.onoverscroll !== undefined) {
    // ... UA supports overscroll event.
  }
  if (window.onscrollend !== undefined) {
    // ... UA supports scrollend event.
  }    

References

Status