Download the PHP package webtourismus/aos without Composer
On this page you can find all versions of the php package webtourismus/aos. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download webtourismus/aos
More information about webtourismus/aos
Files in webtourismus/aos
Package aos
Short Description Mirror of https://www.npmjs.com/package/aos as drupal-library
License MIT
Homepage http://michalsnik.github.io/aos/
Informations about the package aos
:exclamation::exclamation::exclamation: This is README for aos@next :exclamation::exclamation::exclamation:
For last stable release (v2) go here
๐ Demo
๐ Codepen Examples
- Different built-in animations
- With anchor setting in use
- With anchor-placement and different easings
- With simple custom animations
๐ To get a better understanding how this actually works, I encourage you to check my post on CSS-tricks.
โ Installation
Basic
Add styles in <head>
:
Add script right before closing </body>
tag, and initialize AOS:
Using package managers
Install aos
package:
yarn add aos@next
- or
npm install --save aos@next
Import script, styles and initialize AOS:
In order to make it work you'll have to make sure your build process has configured styles loader, and bundles it all correctly. If you're using Parcel however, it will work out of the box as provided.
๐ค How to use it?
1. Initialize AOS:
2. Set animation using data-aos
attribute:
And adjust behaviour by using data-aos-*
attributes:
See full list of all animations, easings and anchor placements
Anchor
There is also a setting that can be used only on per-element basis:
data-aos-anchor
- element whose offset will be used to trigger animation instead of an actual one.
Examples:
This way you can trigger animation on one element, while you scroll to another - useful in animating fixed elements.
API
AOS object is exposed as a global variable, for now there are three methods available:
init
- initialize AOSrefresh
- recalculate all offsets and positions of elements (called on window resize)refreshHard
- reinit array with AOS elements and triggerrefresh
(called on DOM changes that are related toaos
elements)
Example execution:
By default AOS is watching for DOM changes and if there are any new elements loaded asynchronously or when something is removed from DOM it calls refreshHard
automatically. In browsers that don't support MutationObserver
like IE you might need to call AOS.refreshHard()
by yourself.
refresh
method is called on window resize and so on, as it doesn't require to build new store with AOS elements and should be as light as possible.
JS Events
AOS dispatches two events on document: aos:in
and aos:out
whenever any element animates in or out, so that you can do extra stuff in JS:
You can also tell AOS to trigger custom event on specific element, by setting data-aos-id
attribute:
Then you'll be able to listen for two custom events then:
aos:in:super-duper
aos:out:super-duper
Recipes:
Adding custom animations:
Sometimes built-in animations are just not enough. Let's say you need one box to have different animation depending on resolution. Here's how you could do it:
Then use it in HTML:
The element will only animate opacity on mobile devices, but from 768px width it'll also slide from right to left.
Adding custom easing:
Similar to animations you can add custom easings:
Customizing default animations distance
Default distance for built-in animations is 100px. As long as you're using SCSS though, you can override it:
You have to however configure your build process to allow it to import styles from node_modules
beforehand.
Integrating external CSS animation library (e.g. Animate.css):
Use animatedClassName
to change default behaviour of AOS, to apply class names placed inside data-aos
on scroll.
The above element will get two classes: animated
and fadeInUp
. Using different combinations of the three above settings, you should be able to integrate any external CSS animation library.
External libraries however don't care too much about animation state before the actual animation. So if you want those elements to be not visible before scrolling, you might need to add similar styles:
Caveats:
setting: duration
, delay
Duration and delay accept values from 50 to 3000, with step 50ms, it's because those are handled by css, and to not make css longer than it is already I implemented only a subset. I believe those should cover most cases.
If not, you can write simple CSS that will add another duration, for example:
This code will add 4000ms duration available for you to set on AOS elements, or to set as global duration while initializing AOS script.
Notice that double [data-aos][data-aos]
- it's not a mistake, it is a trick, to make individual settings more important than global, without need to write ugly "!important" there :)
Example usage:
Predefined options
Animations
-
Fade animations:
- fade
- fade-up
- fade-down
- fade-left
- fade-right
- fade-up-right
- fade-up-left
- fade-down-right
- fade-down-left
-
Flip animations:
- flip-up
- flip-down
- flip-left
- flip-right
-
Slide animations:
- slide-up
- slide-down
- slide-left
- slide-right
- Zoom animations:
- zoom-in
- zoom-in-up
- zoom-in-down
- zoom-in-left
- zoom-in-right
- zoom-out
- zoom-out-up
- zoom-out-down
- zoom-out-left
- zoom-out-right
Anchor placements:
- top-bottom
- top-center
- top-top
- center-bottom
- center-center
- center-top
- bottom-bottom
- bottom-center
- bottom-top
Easing functions:
- linear
- ease
- ease-in
- ease-out
- ease-in-out
- ease-in-back
- ease-out-back
- ease-in-out-back
- ease-in-sine
- ease-out-sine
- ease-in-out-sine
- ease-in-quad
- ease-out-quad
- ease-in-out-quad
- ease-in-cubic
- ease-out-cubic
- ease-in-out-cubic
- ease-in-quart
- ease-out-quart
- ease-in-out-quart
โQuestions
If you found a bug, have a question or an idea, please check AOS contribution guide and don't hesitate to create new issues.