Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Web Animation
  3. AOS

AOS

MITJavaScript

A lightweight JavaScript library for animating elements on scroll with CSS-driven transitions.

GitHubGitHub
28.1k stars2.6k forks0 contributors

What is AOS?

AOS (Animate On Scroll) is a lightweight JavaScript library that detects page scrolling and triggers smooth CSS animations on elements as they enter or leave the viewport. It provides an easy way to add engaging scroll-based animations to websites without heavy dependencies or complex configurations. The library focuses on simplicity and performance, leveraging CSS for hardware-accelerated transitions while keeping the JavaScript footprint minimal.

Target Audience

Web developers and designers looking to add scroll-triggered animations to websites with minimal setup, particularly those working on marketing sites, portfolios, or content-heavy pages where visual engagement is a priority.

Value Proposition

Developers choose AOS for its straightforward, declarative HTML attribute-based setup, extensive library of built-in animations, and fine-grained control over animation timing and behavior without requiring deep JavaScript knowledge. Its small size, performance focus, and ability to integrate with external CSS animation libraries like Animate.css offer flexibility without bloat.

Overview

Animate on scroll library

Use Cases

Best For

  • Adding entrance animations to sections or elements as users scroll down a webpage.
  • Creating interactive storytelling or presentation websites where content reveals on scroll.
  • Enhancing marketing or landing pages with engaging, performance-optimized animations.
  • Building portfolios or personal websites where visual flair on scroll improves user experience.
  • Implementing scroll-triggered animations without relying on heavy frameworks or complex JavaScript.
  • Integrating with external CSS animation libraries like Animate.css for expanded animation options.

Not Ideal For

  • Projects requiring animations triggered by user interactions beyond scrolling (e.g., clicks, hovers, or drag-and-drop)
  • Server-side rendered applications aiming for zero client-side JavaScript to maximize performance or accessibility
  • Single-page applications with highly dynamic content that mounts/unmounts frequently without full page reloads
  • Complex animation sequences needing precise timeline control or synchronization across multiple elements

Pros & Cons

Pros

Extensive Built-in Animations

Offers a wide range of predefined animations like fades, flips, slides, and zooms, making it easy to add effects without writing custom CSS from scratch, as listed in the animations section.

Granular Control via Attributes

Allows fine-tuning per element with HTML data attributes for offset, delay, duration, easing, and anchor placement, enabling precise adjustments without JavaScript coding, demonstrated in the usage examples.

Lightweight and Performant

Focuses on simplicity with minimal JavaScript, leveraging CSS for hardware-accelerated transitions to ensure smooth animations while keeping the library small and fast, as emphasized in the philosophy.

Event-Driven Interactivity

Dispatches custom JavaScript events (aos:in, aos:out) for advanced integrations, allowing developers to trigger other actions based on animation states, as shown in the JS Events section.

Extensible and Integrable

Supports custom animations, easing functions, and seamless integration with external CSS libraries like Animate.css, providing flexibility for advanced use cases, as detailed in the recipes.

Cons

Limited Animation Timing Granularity

Duration and delay values are restricted to steps of 50ms from 50 to 3000, which may not accommodate all timing needs without custom CSS overrides, as noted in the caveats.

Manual Refresh for Dynamic Content

In applications with asynchronous DOM changes, AOS requires explicit calls to refresh() or refreshHard() to detect new elements, adding complexity for dynamic or single-page apps.

CSS Dependency for Customizations

While it uses CSS for animations, creating custom effects or integrating with other libraries often requires additional CSS setup, which might be a barrier for developers less familiar with CSS.

Scroll-Only Trigger Limitation

The library is designed solely for scroll-based animations, so it cannot natively handle other triggers like clicks or hovers without extra JavaScript workarounds.

Frequently Asked Questions

Quick Stats

Stars28,069
Forks2,640
Contributors0
Open Issues344
Last commit2 years ago
CreatedSince 2015

Tags

#css-animations#vanilla-js#ui-effects#frontend#javascript-library#web-development#scroll-animation#performance

Built With

J
JavaScript
S
SCSS
C
CSS

Included in

Web Animation1.5k
Auto-fetched 1 day ago

Related Projects

ScrollrevealScrollreveal

Animate elements as they scroll into view.

Stars22,509
Forks2,219
Last commit2 years ago
ScrollMagicScrollMagic

The javascript library for magical scroll interactions.

Stars14,949
Forks2,135
Last commit14 days ago
LaxxxLaxxx

Simple & lightweight (<4kb gzipped) vanilla JavaScript library to create smooth & beautiful animations when you scroll.

Stars10,487
Forks488
Last commit11 months ago
WowWow

Reveal CSS animation as you scroll down a page

Stars9,916
Forks4,003
Last commit1 year ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub