Nicks Blog Site

AOS (animate on scroll)

What is AOS?

AOS (animate on scroll) is a small JavaScript library that allows you to add animated effects to HTML elements when they come into view as the user scrolls down a webpage. AOS provides a set of predefined animations using CSS that can be easily applied to elements using simple data attributes in the HTML code.

Installing AOS

First you have to link to the CDN sources, Add the stylesheet in the head element,

<link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet">

Add script element right before closing body tag, and initialize AOS:

  <script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
  <script>
    AOS.init();
  </script>

Using AOS

Below is the default setting for AOS,

AOS.init();

// You can also pass an optional settings object
// below listed default settings
AOS.init({
  // Global settings:
  disable: false, // accepts following values: 'phone', 'tablet', 'mobile', boolean, expression or function
  startEvent: 'DOMContentLoaded', // name of the event dispatched on the document, that AOS should initialize on
  initClassName: 'aos-init', // class applied after initialization
  animatedClassName: 'aos-animate', // class applied on animation
  useClassNames: false, // if true, will add content of `data-aos` as classes on scroll
  disableMutationObserver: false, // disables automatic mutations' detections (advanced)
  debounceDelay: 50, // the delay on debounce used while resizing window (advanced)
  throttleDelay: 99, // the delay on throttle used while scrolling the page (advanced)


  // Settings that can be overridden on per-element basis, by `data-aos-*` attributes:
  offset: 120, // offset (in px) from the original trigger point
  delay: 0, // values from 0 to 3000, with step 50ms
  duration: 400, // values from 0 to 3000, with step 50ms
  easing: 'ease', // default easing for AOS animations
  once: false, // whether animation should happen only once - while scrolling down
  mirror: false, // whether elements should animate out while scrolling past them
  anchorPlacement: 'top-bottom', // defines which position of the element regarding to window should trigger the animation

});

To set an animation you have to set the data-aos= attribute,

<div data-aos="fade-in"></div>

You can adjust the default properties,

 <div
    data-aos="fade-up"
    data-aos-offset="200"
    data-aos-delay="50"
    data-aos-duration="1000"
    data-aos-easing="ease-in-out"
    data-aos-mirror="true"
    data-aos-once="false"
    data-aos-anchor-placement="top-center"
  >
  </div>

If you want to overwrite the default properties you and make all the animation the same you can change the properties on the objects in the AOS.init(),

AOS.init(
    duration: 300,
    delay: 500
)

Here is a list of all the pre-defined properties,

Fade animations:

Flip animations:

Slide animations:

Zoom animations:

Anchor placements:

Easing functions:

Here are some code examples to try

Example 1

  <div data-aos="fade-up">
    <p>
    This is a test.
    </p>
   </div>

Example 2

<div data-aos="fade-left" data-aos-delay="300" data-aos-duration="1000">
    <p>
      Lorem ipsum dolor sit amet consectetur adipisicing elit. 
      Veniam voluptas vero magnam veritatis iure libero maiores 
      blanditiis consectetur, voluptatem animi ullam doloremque 
      reprehenderit unde quis eius quaerat aspernatur labore mollitia?
      Lorem ipsum dolor sit, amet consectetur adipisicing elit. Itaque 
      similique veniam iusto quae rem mollitia vel, quod, laborum consequuntur 
      quo soluta culpa blanditiis placeat vitae minima optio reprehenderit illum nisi.
      Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolor, deserunt
       assumenda temporibus magnam mollitia sit et veritatis rerum eius at 
       nam quam. Laborum amet nemo quibusdam! Fugit corrupti ullam odit.
    </p>
    </div>

Example 3

    <div
    data-aos="fade-up"
    data-aos-offset="200"
    data-aos-delay="50"
    data-aos-duration="1000"
    data-aos-easing="ease-in-out"
    data-aos-mirror="true"
    data-aos-once="false"
    data-aos-anchor-placement="top-center">
      <p>
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Veniam voluptas vero magnam veritatis iure libero
         maiores blanditiis consectetur, voluptatem animi ullam doloremque reprehenderit unde quis eius quaerat aspernatur labore mollitia?
        Lorem ipsum dolor sit, amet consectetur adipisicing elit. Itaque similique veniam iusto quae rem mollitia
         vel, quod, laborum consequuntur quo soluta culpa blanditiis placeat vitae minima optio reprehenderit illum nisi.
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolor, deserunt assumenda temporibus magnam
         mollitia sit et veritatis rerum eius at nam quam. Laborum amet nemo quibusdam! Fugit corrupti ullam odit.
      </p>
    </div>

Example 4

    <div
    data-aos="flip-down"
    data-aos-offset="200"
    data-aos-delay="1000"
    data-aos-duration="1000"
    data-aos-easing="ease-in-out-cube"
    data-aos-mirror="false"
    data-aos-once="false"
    data-aos-anchor-placement="top-center">
      <p>
        Lorem ipsum dolor sit amet consectetur adipisicing elit. 
        Veniam voluptas vero magnam veritatis iure libero
         maiores blanditiis consectetur, voluptatem animi ullam 
        doloremque reprehenderit unde quis eius quaerat aspernatur labore mollitia?
        Lorem ipsum dolor sit, amet consectetur adipisicing elit. Itaque similique
         veniam iusto quae rem mollitia vel, quod, laborum consequuntur quo soluta culpa blanditiis 
         placeat vitae minima optio reprehenderit illum nisi.
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolor, 
        deserunt assumenda temporibus magnam mollitia sit et veritatis rerum eius at nam quam. 
        Laborum amet nemo quibusdam! Fugit corrupti ullam odit.
      </p>
    </div>