For scrolling behaviors, the strongest matches are legendapp/legend-list (Legend List is a high-performance list rendering library that), fisshy/react-scroll (This React library implements smooth element-targeted scrolling and viewport) and janpaepke/scrollmagic (ScrollMagic is a scroll interaction framework that maps scroll). alexfoxy/lax.js and bvaughn/react-virtualized round out the shortlist. Each is ranked by relevance to your query, popularity and recent activity.
Hand-picked open-source scroll interaction libraries, ranked by GitHub stars and activity. Compare the top tools and pick the right one.
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
Legend List is a high-performance list rendering library that supports windowed virtualization, infinite scrolling, and smooth scroll anchoring for large datasets, fitting the core requirements of advanced web scrolling and virtualization.
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
This React library implements smooth element-targeted scrolling and viewport navigation, fitting the category as a specialized scrolling utility even though it omits infinite and virtual scrolling features.
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
ScrollMagic is a scroll interaction framework that maps scroll progress to animations and callbacks, fitting the core scroll behavior library category well despite missing virtual scrolling and snap features.
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
Lax.js is a lightweight JavaScript library dedicated to scroll-driven animations and parallax effects, making it a fitting tool for custom motion along the page axis despite lacking features like infinite or virtual scrolling.
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
This React library implements high-performance virtualized lists, grids, and infinite scrolling to efficiently handle massive datasets in web applications.
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
Better-scroll is a JavaScript scroll library designed for high-performance touch and mouse scrolling with a plugin architecture, covering features like infinite scrolling and smooth scrolling.
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
This repository provides virtual scrolling and dataset optimization for web applications, fitting the category well though focused primarily on performance rather than the complete suite of scroll animations and customization.
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
Locomotive Scroll is a JavaScript library for smooth scrolling, parallax effects, and viewport-based animations, missing some requested features like infinite scrolling and virtual scrolling but fitting the core scroll behavior category.
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
React Virtuoso is a React component library dedicated to virtualized lists and efficient rendering of large datasets, fitting the search through its support for virtual scrolling and infinite scrolling features.
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
elevator.js provides smooth scrolling and custom scroll triggers with animated transitions, though its scope is strictly limited to back-to-top functionality rather than full scroll-driven animations or infinite scrolling.
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
ScrollTrigger is a JavaScript library focused on viewport intersection events and scroll-driven CSS class toggling, making it a relevant building block for scroll-driven animations even though it lacks features like virtual scrolling or scroll snap.
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
ScrollReveal is a JavaScript library that triggers CSS animations as elements enter the viewport, fitting the scroll-driven animations aspect of the category while omitting other scrolling behaviors like infinite or virtual scrolling.
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
This repository provides a JavaScript polyfill for smooth scrolling behavior across different browsers, matching the requested capability even though its scope is limited to smooth scrolling rather than the full suite of scroll features.
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
iScroll is a classic JavaScript scrolling library that provides inertial panning, smooth scrolling, and scroll snapping for web elements, though it lacks built-in virtual scrolling and modern scroll-driven animation features.
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
This library specifically implements smooth scrolling for anchor links with custom easing and offset options, fitting the targeted category even though it focuses narrowly on smooth transitions rather than the full suite of scroll behaviors.
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
This repository provides a scroll-triggered animation library that handles viewport visibility and CSS transitions, fitting the scroll-driven animation feature although it does not cover infinite scrolling or virtual lists.
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
Skrollr is a dependency-free frontend library focused on scroll-driven animations and parallax effects by linking element properties to scroll positions, though it does not cover all broader scrolling features like infinite or virtual scrolling.
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
This project is a jQuery-based library for implementing infinite scrolling through dynamic content loading, making it a relevant tool for custom scroll behaviors even though it focuses primarily on that single feature rather than the full suite of modern scrolling capabilities.
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
This library implements infinite scrolling and pull-to-refresh patterns for web and Vue applications, though it does not cover every advanced feature like scroll-driven animations or virtual scrolling.
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
This library specifically implements automatic infinite scrolling and pagination for web applications, fitting the core category despite focusing less on other scroll animations.
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
This library implements custom full-screen scrolling and snap layouts with navigation utilities, though it focuses on section-based page transitions rather than generic infinite or virtual lists.
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
This library enables full-page stacked section scrolling and snap navigation, fitting the category well despite focusing on page-by-page movement rather than general custom scrolling utilities.
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
This library provides infinite scrolling to easily turn traditional pagination into continuous scroll-driven pages, fitting the requested scrolling behavior domain well despite lacking other advanced animations or virtualisation features.
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
ScrollOut is a lightweight utility that detects scroll changes to trigger reveal and parallax animations, matching the scroll-driven animation aspect of your search even though it lacks virtual scrolling or infinite scroll.
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
This TypeScript library provides customizable and smooth scrollbar solutions for web applications, fitting the category well despite lacking some advanced features like virtual scrolling or scroll-driven animations.
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
This repository provides a seamless scrolling component for Vue.js applications, offering a focused solution for custom scroll behaviors although it lacks the broader feature set like virtual scrolling or scroll-driven animations.
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.
This Angular component implements virtual scrolling for large lists to improve performance, matching the core intent despite lacking smooth scroll and animation features.
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
This React component provides customizable scrollbars for web applications, fitting the category well even though its scope is narrower than a full suite of scrolling animations.
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
This Angular directive library handles infinite loading patterns through scroll position monitoring, making it a fitting tool for implementing infinite scroll within that specific framework.
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
This JavaScript library implements full-page section snapping and view navigation, fitting the scroll behavior category well despite lacking infinite or virtual scrolling features.
Vue Virtual Scroll - High-performance, feature full Vue 3 virtual scrolling library (dynamic items size with fixed size optimization, list/table/grid mode, support for huge size)
This library provides high-performance virtual scrolling for Vue 3 applications, making it a good fit for handling large lists efficiently even though it does not cover every requested scrolling feature.
React-bits is a comprehensive toolkit for web development that combines a library of interactive motion primitives with a command-line interface for component management and AI-assisted coding. It provides a framework for implementing declarative motion states and specialized typography animations, allowing developers to build responsive, gesture-enabled interfaces that respond to user input. The project distinguishes itself through a remote registry system that allows for the direct injection of modular UI source code into local project directories. It also features a protocol-based bridge t
React-bits is a UI component library focused on animations and motion primitives that can support custom scroll and visual effects, though it lacks dedicated native support for advanced scroll features like virtual scrolling or scroll snap.
An infinite scroll directive for vue.js.
This repository provides an infinite scroll directive specifically for Vue.js applications, matching the visitor's need for custom scrolling behavior despite being limited to just one of the requested features.
| Repository | Stars | Language | License | Last push |
|---|---|---|---|---|
| legendapp/legend-list | 3K | TypeScript | mit | |
| fisshy/react-scroll | 4.4K | JavaScript | MIT | |
| janpaepke/scrollmagic | 15K | TypeScript | MIT | |
| alexfoxy/lax.js | 10.5K | JavaScript | mit | |
| bvaughn/react-virtualized | 27.1K | JavaScript | MIT | |
| ustbhuangyi/better-scroll | 16.5K | TypeScript | MIT | |
| akryum/vue-virtual-scroller | 10.6K | Vue | — | |
| locomotivemtl/locomotive-scroll | 8.8K | JavaScript | MIT | |
| petyosi/react-virtuoso | 6.3K | TypeScript | — | |
| tholman/elevator.js | 6.6K | JavaScript | — |