# Scroll interaction library

> AI-ranked search results for `scrolling behaviors` on awesome-repositories.com — ordered by an LLM for relevance, best match first. 104 total matches; showing the top 30.

Explore on the web: https://awesome-repositories.com/q/scrolling-behaviors

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [this search on awesome-repositories.com](https://awesome-repositories.com/q/scrolling-behaviors).**

## Results

- [legendapp/legend-list](https://awesome-repositories.com/repository/legendapp-legend-list.md) (2,953 ⭐) — Legend List is a high-performance list rendering library designed to display massive collections of data with varying item heights. It utilizes windowed virtualization and a measured-height cache to render only the visible portion of a list, preventing lag and maintaining a smooth frame rate.

The library specializes in bidirectional infinite scrolling and stable scroll anchoring, which prevents visual jumps when content is prepended to the top of a list. It includes specific alignment capabilities to keep content pinned to the bottom, supporting the layout requirements of chat interfaces.

To
- [fisshy/react-scroll](https://awesome-repositories.com/repository/fisshy-react-scroll.md) (4,411 ⭐) — react-scroll is a library for managing smooth and immediate scrolling behavior between page elements in React applications. It functions as a DOM scroll controller, providing a declarative API and a set of components to animate the viewport to specific target elements.

The library enables custom scrolling by allowing the viewport to move to target elements through either instant jumps or animated transitions. It provides a system for integrating this scrolling logic into custom components using mixins to define specific movement triggers and targets.

The project covers viewport navigation an
- [janpaepke/scrollmagic](https://awesome-repositories.com/repository/janpaepke-scrollmagic.md) (14,951 ⭐) — ScrollMagic is a DOM scroll interaction framework and animation engine used to map scroll progress to callbacks and visual effects. It functions as a library for triggering animations based on a user's scroll position and the proximity of elements to the viewport.

The framework employs a plugin-based system to extend core behavior and customize how elements react during movement. This allows for the development of non-standard scrolling interactions and interactive storytelling experiences where content transitions are tied to the scroll position.

The system provides capabilities for viewpor
- [alexfoxy/lax.js](https://awesome-repositories.com/repository/alexfoxy-lax-js.md) (10,493 ⭐) — Lax.js is a lightweight JavaScript library designed for creating scroll-driven animations and interactive motion effects on web pages. It functions as a frontend interaction framework that enables developers to apply dynamic visual transformations to elements as they enter or exit the viewport.

The library distinguishes itself by decoupling animation logic from core scripts through a declarative mapping system that utilizes data attributes. It processes scroll progress through a functional pipeline, mapping vertical offsets to specific CSS property ranges using linear interpolation to ensure
- [bvaughn/react-virtualized](https://awesome-repositories.com/repository/bvaughn-react-virtualized.md) (27,072 ⭐) — react-virtualized is a library of components for rendering massive lists and tables by drawing only the elements visible in the viewport. It provides specialized layout managers including a windowed grid component and a dynamic height list manager.

The project includes a masonry layout engine for packing items of varying heights and widths, as well as an infinite scroll interface for incrementally fetching and appending data.

The library covers a broad range of virtualization capabilities, including frozen grid elements, reverse list rendering, and synchronized viewport scrolling. It also su
- [ustbhuangyi/better-scroll](https://awesome-repositories.com/repository/ustbhuangyi-better-scroll.md) (16,489 ⭐) — Better-scroll is a JavaScript scroll library and touch interaction engine designed to create high-performance scrollable areas in web browsers. It functions as a modular UI component framework that provides the foundation for building complex scrollable elements.

The library is distinguished by a plugin-based architecture that allows the injection of custom methods and event hooks. This system enables the creation of specialized interface components such as carousel sliders, scrollable picker inputs, and draggable element systems.

The project covers a wide range of mobile web interaction pat
- [akryum/vue-virtual-scroller](https://awesome-repositories.com/repository/akryum-vue-virtual-scroller.md) (10,615 ⭐) — This library is a headless virtualization engine designed to optimize performance for large-scale list and grid rendering in Vue applications. By mounting only the elements currently visible within the viewport, it minimizes browser operations and memory usage, allowing interfaces to remain responsive even when handling massive datasets.

The engine distinguishes itself through a headless layout abstraction that decouples virtualization logic from specific markup, enabling the creation of custom interfaces without enforcing rigid container styles. It features automatic, dynamic size calculatio
- [locomotivemtl/locomotive-scroll](https://awesome-repositories.com/repository/locomotivemtl-locomotive-scroll.md) (8,807 ⭐) — Locomotive Scroll is a JavaScript library and toolkit for managing DOM scroll interactions, featuring a smooth scroll motion controller and a parallax scrolling engine. It provides a system for implementing fluid scrolling and tracking element visibility within the viewport.

The library creates depth and motion by moving elements at different speeds relative to the scroll position. It includes a viewport visibility tracker used to initiate visual transitions and animations when specific elements enter the browser viewport.

The toolkit covers programmatic scroll control, dynamic element regis
- [petyosi/react-virtuoso](https://awesome-repositories.com/repository/petyosi-react-virtuoso.md) (6,348 ⭐) — React Virtuoso is a React component library for rendering large datasets efficiently through virtualized lists, grids, tables, and chat interfaces. It automatically measures variable-height items at runtime, computes accurate scroll offsets without requiring fixed sizes, and renders only the items within the visible viewport plus a configurable buffer zone. The library manages scroll position through a state machine that tracks direction, position, and anchor items to handle auto-scroll, sticky headers, and bidirectional loading.

The library distinguishes itself with specialized components fo
- [tholman/elevator.js](https://awesome-repositories.com/repository/tholman-elevator-js.md) (6,641 ⭐) — elevator.js is a lightweight JavaScript library that adds a playful, elevator-themed scroll-to-top button to a webpage. When clicked, it smoothly animates the page back to the top while playing a looping elevator music track in the background, masking the transition and adding a whimsical touch to the user experience.

The library goes beyond a simple scroll-to-top button by offering configurable scroll duration, the ability to scroll to any specified DOM element with optional vertical padding, and callback hooks that fire user-defined functions at the start and end of the animation. This allo
- [terwanerik/scrolltrigger](https://awesome-repositories.com/repository/terwanerik-scrolltrigger.md) (3,964 ⭐) — ScrollTrigger is a JavaScript library and DOM scroll event manager designed to execute callbacks and toggle CSS classes when elements enter or exit the browser viewport. It functions as a high-level interface for the Intersection Observer API and a system for initiating visual transitions and asynchronous tasks based on an element's position relative to the viewport.

The tool allows for the definition of precise trigger points using pixel or percentage offsets to control exactly when events fire. It manages scroll-driven visual animations and lazy loading implementations by tracking visibilit
- [scrollreveal/scrollreveal](https://awesome-repositories.com/repository/scrollreveal-scrollreveal.md) (22,493 ⭐) — ScrollReveal is a client-side JavaScript library used to trigger CSS animations and transitions for page elements as they enter the browser viewport. It functions as a DOM element animation trigger and a simplified wrapper for the Intersection Observer API to coordinate visual entrance effects and staggered animations based on the user's scroll position.

The library focuses on scroll-driven motion and reveal effects, enabling the execution of visual changes and animations automatically as a user navigates a website. It manages the reveal of page content to create movement and progression with
- [iamdustan/smoothscroll](https://awesome-repositories.com/repository/iamdustan-smoothscroll.md) (3,826 ⭐) — smoothscroll is a browser compatibility library and JavaScript polyfill that provides uniform smooth scrolling behavior across different web browsers. It functions as a frontend animation utility that intercepts standard scroll commands and replaces them with custom animation logic to ensure consistent navigation transitions.

The library includes a runtime feature detection tool that identifies native browser support for scroll properties, preventing redundant execution in modern environments. It synchronizes page position updates with the browser display refresh rate to prevent visual stutte
- [cubiq/iscroll](https://awesome-repositories.com/repository/cubiq-iscroll.md) (12,815 ⭐) — iscroll is a JavaScript smooth scrolling library and web interaction framework. It provides a 2D web panning controller and a CSS transform zoom engine to manage inertial scrolling, panning, and zooming for web elements across different devices.

The project enables the implementation of custom scrollbar interfaces and navigation maps that track the current viewport position. It supports the creation of interactive web carousels with element snapping, web parallax effects, and content scaling via pinch-to-zoom or mouse-wheel inputs.

The library covers a broad range of interaction capabilities
- [cferdinandi/smooth-scroll](https://awesome-repositories.com/repository/cferdinandi-smooth-scroll.md) (5,444 ⭐) — This JavaScript smooth scrolling library is a frontend utility and viewport motion controller designed to animate transitions to anchor links. It intercepts standard link clicks to replace instant jumps with fluid movement toward target elements.

The library provides configurable motion easing patterns and speed controls to manage acceleration and deceleration. It includes a mechanism to cancel active animations immediately and supports programmatic scroll triggering via direct function calls.

The tool handles positioning offsets to prevent target content from being hidden behind fixed heade
- [michalsnik/aos](https://awesome-repositories.com/repository/michalsnik-aos.md) (28,075 ⭐) — AOS is a scroll-triggered animation library that controls the execution, timing, and mapping of CSS transitions based on element visibility and browser viewport intersections. It functions as a DOM element animation controller and a viewport intersection trigger to initiate visual transitions as elements enter the screen.

The library utilizes a custom CSS transition bridge to map scroll-based triggers to CSS class changes, enabling integration with external styling frameworks. It supports anchor-based animation triggers, allowing the visibility of one page element to act as the trigger point
- [prinzhorn/skrollr](https://awesome-repositories.com/repository/prinzhorn-skrollr.md) (18,426 ⭐) — Skrollr is a dependency-free scroll-driven animation engine and cross-platform frontend library. It functions as a toolkit for linking CSS properties and HTML attributes to scroll positions to create synchronized animations, specifically providing utilities for the interpolation of SVG attributes.

The library enables the creation of parallax scrolling and interactive web storytelling by mapping scroll offsets to specific style values. It allows for the development of non-linear movement and dynamic SVG effects through the use of custom HTML attributes that define keyframes.

The system covers
- [fredwu/jquery-endless-scroll](https://awesome-repositories.com/repository/fredwu-jquery-endless-scroll.md) (838 ⭐) — This project is a jQuery plugin designed to replace traditional page-based navigation with continuous, dynamic content loading. It enables web interfaces to automatically fetch and append additional data to the document as a user scrolls toward the bottom of the viewport.

The library distinguishes itself through granular control over the scroll-based trigger logic, allowing developers to define specific sensitivity thresholds, execution delays, and stopping conditions for content requests. It also provides built-in support for managing the visual state of the interface, including the display
- [mescroll/mescroll](https://awesome-repositories.com/repository/mescroll-mescroll.md) (4,459 ⭐) — mescroll is a JavaScript infinite scroll library and mobile web scroll manager designed to implement pull-to-refresh and pull-up-loading patterns. It provides a system for handling touch-based scrolling, managing pagination states, and integrating these behaviors within Vue applications.

The library distinguishes itself through specialized support for chat interfaces, enabling reverse-order data loading and the ability to inject data in a reverse direction to simulate message histories. It also includes a state-persistent scroll cache to preserve vertical offsets and list data when users navi
- [metafizzy/infinite-scroll](https://awesome-repositories.com/repository/metafizzy-infinite-scroll.md) (7,489 ⭐) — Infinite Scroll is a JavaScript library that automatically loads and appends the next page of content when a user scrolls near the bottom of a container, or optionally when they click a button. It provides scroll-based pagination that fetches and inserts subsequent pages of content, with URL-driven content loading that determines next page URLs from selectors, templates, or custom functions.

The library integrates with browser history, updating the URL and history state as new pages load while preserving scroll position so each page state is bookmarkable and refreshable. It is compatible with
- [alvarotrigo/fullpage.js](https://awesome-repositories.com/repository/alvarotrigo-fullpage-js.md) (35,437 ⭐) — fullPage.js is a JavaScript full-screen scrolling library and layout engine used to create websites composed of vertical sections and horizontal slides that snap to the viewport. It provides a system for organizing web content into full-screen pages with automatic snapping behavior.

The library distinguishes itself through a WebGL transition framework and visual storytelling tools, enabling cinematic effects such as 3D rotations, parallax backgrounds, fading, and water distortion during navigation. It also features a responsive adaptation system that can switch from automatic snapping to stan
- [alvarotrigo/pagepiling.js](https://awesome-repositories.com/repository/alvarotrigo-pagepiling-js.md) (4,094 ⭐) — pagePiling.js is a JavaScript full-page scrolling library used to create stacked layouts of full-screen sections. It functions as a section-based layout engine and an input-driven page navigator that manages movement across mouse wheels, touch gestures, and keyboard inputs.

The library synchronizes page sections with unique URL anchors to enable direct linking and bookmarking. It includes a lifecycle event handler that executes custom JavaScript callbacks when sections are rendered, loaded, or exited during transitions.

The system provides capabilities for programmatic section navigation, sy
- [webcreate/infinite-ajax-scroll](https://awesome-repositories.com/repository/webcreate-infinite-ajax-scroll.md) (899 ⭐) — Infinite-ajax-scroll is a JavaScript library that automatically appends subsequent pages of content as users scroll down a webpage, turning standard pagination into infinite scrolling. It transforms traditional multi-page website pagination into continuous loading flows by fetching and inserting next-page items directly into active container elements.

The library includes a pagination parser that extracts next-page anchor links and container structures directly from existing static markup without requiring backend changes. It monitors scroll positions relative to document boundaries to automa
- [scroll-out/scroll-out](https://awesome-repositories.com/repository/scroll-out-scroll-out.md) (1,216 ⭐) — Scroll-out is a JavaScript scroll animation library that detects element visibility during scroll to trigger reveal, parallax, and dynamic style effects. It serves as a CSS custom property scroll driver that computes and applies live property values based on scroll position, allowing page styles to adapt fluidly, alongside functioning as a DOM viewport intersection observer that monitors when elements enter or leave the browser viewport to update their visual state attributes.

The library maps real-time scroll offsets and element positions directly to custom CSS properties for fluid visual tr
- [dolphin-wood/smooth-scrollbar](https://awesome-repositories.com/repository/dolphin-wood-smooth-scrollbar.md) (3,357 ⭐) — Smooth-scrollbar is a customizable JavaScript library that replaces native browser scrollbars and scrolling behavior on target DOM elements with inertial momentum physics. It provides consistent cross-browser scrolling interfaces, hardware-accelerated visual translations, and dynamic thumb positioning.

The library supports nested scroll container management, allowing outer containers to continue scrolling automatically when inner scrollable areas reach their boundary edges. It features a modular plugin architecture that enables third-party extensions to hook into core scroll events, track upd
- [chenxuan0000/vue-seamless-scroll](https://awesome-repositories.com/repository/chenxuan0000-vue-seamless-scroll.md) (1,893 ⭐) — Vue seamless scroll is a frontend animation library and Vue.js component designed to create continuous, infinite scrolling effects for lists and containers. It animates content in an endless loop without visual interruption or stuttering, supporting both horizontal and vertical scrolling directions. 

The library manages scrolling behavior through configuration options that adapt to various design layouts and speed requirements. It supports step-based content scrolling for controlled progression alongside continuous motion, letting developers configure scroll paths and operational parameters d
- [rintoj/ngx-virtual-scroller](https://awesome-repositories.com/repository/rintoj-ngx-virtual-scroller.md) (985 ⭐) — An angular virtual scroller component renders large datasets efficiently by displaying only visible items in the viewport, recycling existing DOM elements, and maintaining constant element counts. It handles variable item heights and widths through dynamic sizing calculations and buffer adjustments, while maintaining hidden buffer zones above and below the visible viewport to prevent visual flickering during rapid scrolling.

The library supports event-driven infinite loading by listening for scroll threshold proximity events to trigger chunked data fetching and append new items automatically.
- [malte-wessel/react-custom-scrollbars](https://awesome-repositories.com/repository/malte-wessel-react-custom-scrollbars.md) (3,217 ⭐) — React custom scrollbars is a user interface component built for React applications that replaces native browser scrollbars with custom-styled tracks and thumbs. It maintains consistent visual appearance across different platforms and browsers while generating matching markup on both server and client environments to support server-side rendering without layout shift.

The library provides comprehensive styling options by overriding default track, thumb, and view elements with custom components, CSS classes, or inline styles. It handles layout adjustments by resizing container dimensions dynami
- [orizens/ngx-infinite-scroll](https://awesome-repositories.com/repository/orizens-ngx-infinite-scroll.md) (1,252 ⭐) — This library provides a directive-based solution for implementing infinite loading patterns within Angular applications. It monitors scroll positions to trigger data fetches when users reach defined distance thresholds, facilitating the continuous loading of content as users navigate through an interface.

The implementation decouples scroll tracking from specific elements, allowing it to function with both window-level scrolling and individual overflow-hidden containers. It integrates native browser scroll events into reactive streams and applies throttling logic to manage event frequency, en
- [peachananr/onepage-scroll](https://awesome-repositories.com/repository/peachananr-onepage-scroll.md) (9,474 ⭐) — onepage-scroll is a JavaScript library and scroll orchestrator that transforms websites into a series of sections navigated one page at a time. It functions as a single page navigation tool that implements viewport-based section snapping to lock the scroll position to full-screen segments.

The library provides a responsive scrolling interface that automatically reverts to standard browser scrolling behavior when the window width drops below a defined threshold. It synchronizes the browser address bar with the current section index as the user navigates through the page.

The system includes c
