Skip to content
Enact

ui/Scroller

Unstyled scroller components and behaviors to be customized by a theme or application.

An unstyled scroller.

Example:

<Scroller>Scroll me.</Scroller>

Extends: ui/Scrollerui/Scroller.ScrollerBasic

Properties

A callback function that receives a reference to the scrollTo feature.

Once received, the scrollTo method can be called as an imperative interface.

  • {position: {x, y}} - Pixel value for x and/or y position

  • {align} - Where the scroll area should be aligned. Values are: 'left', 'right', 'top', 'bottom', 'topleft', 'topright', 'bottomleft', and 'bottomright'.

  • {node} - Node to scroll into view

  • {animate} - When true, scroll occurs with animation. When false, no animation occurs.

  • {focus} - When true, attempts to focus item after scroll. Only valid when scrolling by node.

Note: Only specify one of: position, align, node

Example:

// If you set cbScrollTo prop like below;
cbScrollTo: (fn) => {this.scrollTo = fn;}
// You can simply call like below;
this.scrollTo({align: 'top'}); // scroll to the top

Direction of the scroller.

Valid values are:

  • 'both',

  • 'horizontal', and

  • 'vertical'.

Default: 'both'

Specifies how to show horizontal scrollbar.

Valid values are:

  • 'auto',

  • 'visible', and

  • 'hidden'.

Default: 'auto'

Prevents scroll by wheeling on the scroller.

Default: false

Called when scrolling.

Passes scrollLeft, scrollTop. It is not recommended to set this prop since it can cause performance degradation. Use onScrollStart or onScrollStop instead.


Called when scroll starts.

Passes scrollLeft and scrollTop.

Example:

onScrollStart = ({scrollLeft, scrollTop}) => {
    // do something with scrollLeft and scrollTop
}

render = () => (
    <Scroller
        ...
        onScrollStart={this.onScrollStart}
        ...
    />
)

Called when scroll stops.

Passes scrollLeft and scrollTop.

Example:

onScrollStop = ({scrollLeft, scrollTop}) => {
    // do something with scrollLeft and scrollTop
}

render = () => (
    <Scroller
        ...
        onScrollStop={this.onScrollStop}
        ...
    />
)

Specifies how to scroll.

Valid values are:

  • 'translate',

  • 'native'.

Default: 'translate'

Specifies how to show vertical scrollbar.

Valid values are:

  • 'auto',

  • 'visible', and

  • 'hidden'.

Default: 'auto'

An unstyled base scroller component.

Properties

Direction of the scroller.

Valid values are:

  • 'both',

  • 'horizontal', and

  • 'vertical'.

Default: 'both'

Programmatically animates the native scroll position of node toward the target left/top offsets using requestAnimationFrame. It computes the scroll direction on each axis, then repeatedly calls scrollBy with a dynamic step (10% of remaining distance, minimum 8px) until the target is reached or 1s has elapsed. Used as a Chrome fallback when repeating a smooth scroll.