2018-07-23 17:52:29 +02:00
# Animate.css [![GitHub release](https://img.shields.io/github/release/daneden/animate.css.svg)](https://github.com/daneden/animate.css/releases) [![CDNJS](https://img.shields.io/cdnjs/v/animate.css.svg)](https://cdnjs.com/libraries/animate.css) [![Build Status](https://travis-ci.com/daneden/animate.css.svg?branch=master)](https://travis-ci.com/daneden/animate.css) [![devDependencies Status](https://david-dm.org/daneden/animate.css/dev-status.svg)](https://david-dm.org/daneden/animate.css?type=dev) [![chat](https://img.shields.io/badge/chat-gitter-green.svg)](https://gitter.im/animate-css/Lobby) [![npm version](https://badge.fury.io/js/animate.css.svg)](https://www.npmjs.com/package/animate.css)
2017-11-16 00:20:46 +01:00
_Just-add-water CSS animation_
2011-12-14 11:14:22 +01:00
`animate.css` is a bunch of cool, fun, and cross-browser animations for you to use in your projects. Great for emphasis, home pages, sliders, and general just-add-water-awesomeness.
2016-03-12 10:22:48 +01:00
2018-10-17 22:01:51 +02:00
## Installation
2017-11-16 00:20:46 +01:00
2018-10-17 22:01:51 +02:00
Install via npm:
2016-06-08 11:00:41 +02:00
```bash
$ npm install animate.css --save
```
2016-03-12 10:22:48 +01:00
2018-10-17 22:01:51 +02:00
or yarn:
2018-10-13 17:04:06 +02:00
```bash
$ yarn add animate.css
```
2018-10-17 22:01:51 +02:00
## Usage
2017-11-16 00:20:46 +01:00
2018-10-17 22:01:51 +02:00
To use animate.css in your website, simply drop the stylesheet into your document's `<head>` , and add the class `animated` to an element, along with any of the animation names. That's it! You've got a CSS animated element. Super!
2014-09-08 17:16:31 +02:00
2017-11-16 00:20:46 +01:00
```html
< head >
< link rel = "stylesheet" href = "animate.min.css" >
< / head >
```
2018-10-17 22:01:51 +02:00
or use a CDN hosted version by [CDNJS ](https://cdnjs.com/libraries/animate.css )
2017-11-16 00:20:46 +01:00
```html
< head >
2018-10-17 22:01:51 +02:00
< link rel = "stylesheet" href = "https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.7.0/animate.min.css" >
2017-11-16 00:20:46 +01:00
< / head >
```
2018-10-17 22:01:51 +02:00
### Animations
2014-09-08 17:16:31 +02:00
2018-10-17 22:01:51 +02:00
To animate an element, add the class `animated` to an element. You can include the class `infinite` for an infinite loop. Finally you need to add one of the following classes to the element:
2014-09-08 17:16:31 +02:00
2017-11-16 00:20:46 +01:00
| Class Name | | | |
| ----------------- | ------------------ | ------------------- | -------------------- |
| `bounce` | `flash` | `pulse` | `rubberBand` |
| `shake` | `headShake` | `swing` | `tada` |
| `wobble` | `jello` | `bounceIn` | `bounceInDown` |
| `bounceInLeft` | `bounceInRight` | `bounceInUp` | `bounceOut` |
| `bounceOutDown` | `bounceOutLeft` | `bounceOutRight` | `bounceOutUp` |
| `fadeIn` | `fadeInDown` | `fadeInDownBig` | `fadeInLeft` |
| `fadeInLeftBig` | `fadeInRight` | `fadeInRightBig` | `fadeInUp` |
| `fadeInUpBig` | `fadeOut` | `fadeOutDown` | `fadeOutDownBig` |
| `fadeOutLeft` | `fadeOutLeftBig` | `fadeOutRight` | `fadeOutRightBig` |
| `fadeOutUp` | `fadeOutUpBig` | `flipInX` | `flipInY` |
| `flipOutX` | `flipOutY` | `lightSpeedIn` | `lightSpeedOut` |
| `rotateIn` | `rotateInDownLeft` | `rotateInDownRight` | `rotateInUpLeft` |
| `rotateInUpRight` | `rotateOut` | `rotateOutDownLeft` | `rotateOutDownRight` |
| `rotateOutUpLeft` | `rotateOutUpRight` | `hinge` | `jackInTheBox` |
| `rollIn` | `rollOut` | `zoomIn` | `zoomInDown` |
| `zoomInLeft` | `zoomInRight` | `zoomInUp` | `zoomOut` |
| `zoomOutDown` | `zoomOutLeft` | `zoomOutRight` | `zoomOutUp` |
| `slideInDown` | `slideInLeft` | `slideInRight` | `slideInUp` |
| `slideOutDown` | `slideOutLeft` | `slideOutRight` | `slideOutUp` |
2018-07-14 08:54:00 +02:00
| `heartBeat` |
2014-09-08 17:16:31 +02:00
Full example:
2017-11-16 00:20:46 +01:00
2014-09-08 17:16:31 +02:00
```html
2018-07-19 03:24:17 +02:00
< h1 class = "animated infinite bounce delay-2s" > Example< / h1 >
2014-09-08 17:16:31 +02:00
```
2015-08-01 12:23:18 +02:00
[Check out all the animations here! ](https://daneden.github.io/animate.css/ )
2018-10-17 22:01:51 +02:00
It's possible to change the duration of your animations, add a delay or change the number of times that it plays:
2011-12-14 11:14:22 +01:00
2018-10-17 22:01:51 +02:00
```css
.yourElement {
animation-duration: 3s;
animation-delay: 2s;
animation-iteration-count: infinite;
}
2013-11-12 00:32:40 +01:00
```
2017-11-16 00:20:46 +01:00
2019-01-16 19:51:43 +01:00
## Usage with Javascript
2013-11-12 00:32:40 +01:00
2019-01-16 19:51:43 +01:00
You can do a whole bunch of other stuff with animate.css when you combine it with Javascript. A simple example:
2011-12-14 11:14:22 +01:00
2012-09-13 20:23:26 +02:00
```javascript
2019-01-16 19:51:43 +01:00
const element = document.querySelector('.my-element')
element.classList.add('animated', 'bounceOutLeft')
2011-12-14 11:14:22 +01:00
```
2013-11-23 22:47:23 +01:00
You can also detect when an animation ends:
```javascript
2019-01-16 19:51:43 +01:00
const element = document.querySelector('.my-element')
element.classList.add('animated', 'bounceOutLeft')
2018-01-29 17:53:49 +01:00
2019-01-16 19:51:43 +01:00
element.addEventListener('animationend', function() { doSomething() })
2013-11-23 22:47:23 +01:00
```
2019-01-16 19:51:43 +01:00
You can use this simple function to add and remove the animations:
2014-11-11 22:18:24 +01:00
2019-01-16 19:51:43 +01:00
```javascript
2019-02-24 15:54:13 +01:00
function animateCSS(element, animationName, callback) {
2019-01-16 19:51:43 +01:00
const node = document.querySelector(element)
node.classList.add('animated', animationName)
2014-04-06 21:00:20 +02:00
2019-01-16 19:51:43 +01:00
function handleAnimationEnd() {
node.classList.remove('animated', animationName)
node.removeEventListener('animationend', handleAnimationEnd)
2016-02-03 18:16:51 +01:00
2019-01-16 19:51:43 +01:00
if (typeof callback === 'function') callback()
}
node.addEventListener('animationend', handleAnimationEnd)
}
2016-02-03 18:16:51 +01:00
```
And use it like this:
```javascript
2019-01-16 19:51:43 +01:00
animateCSS('.my-element', 'bounce')
// or
animateCSS('.my-element', 'bounce', function() {
2018-10-13 17:04:46 +02:00
// Do something after animation
2019-01-16 19:51:43 +01:00
})
2016-02-03 18:16:51 +01:00
```
2019-01-16 19:51:43 +01:00
Notice that the examples are using ES6's `const` declaration, dropping support for IE10 and some aging browsers. If you prefer, switch the `const` to `var` declarations and IE10 and some old browsers will get support (they still have to provide [classList ](https://developer.mozilla.org/en-US/docs/Web/API/Element/classList ) support, so do your [research ](https://caniuse.com/#feat=classlist )).
2018-10-17 22:01:51 +02:00
## Setting _Delay_ and _Speed_
2018-07-24 00:25:37 +02:00
2018-10-17 22:01:51 +02:00
### Delay Class
2018-07-24 00:25:37 +02:00
2018-10-17 22:01:51 +02:00
It's possible to add delays directly on the element's class attribute, just like this:
2018-07-19 03:24:17 +02:00
```html
< div class = "animated bounce delay-2s" > Example< / div >
```
2018-07-24 00:25:37 +02:00
| Class Name | Delay Time |
| ---------- | ---------- |
| `delay-2s` | `2s` |
| `delay-3s` | `3s` |
| `delay-4s` | `4s` |
| `delay-5s` | `5s` |
2018-10-17 22:01:51 +02:00
> _**Note**: The default delays are from 1 second to 5 seconds only. If you need custom delays, add it directly to your own CSS code._
2018-07-24 00:25:37 +02:00
2018-10-17 22:01:51 +02:00
### Slow, Slower, Fast, and Faster Class
2018-07-24 00:25:37 +02:00
2018-10-17 22:01:51 +02:00
It's possible to control the speed of the animation by adding these classes, as a sample below:
2018-07-24 00:25:37 +02:00
```html
< div class = "animated bounce faster" > Example< / div >
```
| Class Name | Speed Time |
| ---------- | ---------- |
| `slow` | `2s` |
| `slower` | `3s` |
| `fast` | `800ms` |
| `faster` | `500ms` |
2018-10-17 22:01:51 +02:00
> _**Note**: The `animated` class has a default speed of `1s`. If you need custom duration, add it directly to your own CSS code._
2018-07-19 03:24:17 +02:00
2013-11-12 00:32:40 +01:00
## Custom Builds
2017-11-16 00:20:46 +01:00
2018-10-17 22:01:51 +02:00
Animate.css is powered by [gulp.js ](http://gulpjs.com/ ), which means you can create custom builds pretty easily. First of all, you’ ll need Gulp and all other dependencies:
2012-07-20 08:57:12 +02:00
2014-02-04 08:51:08 +01:00
```sh
2013-11-12 00:32:40 +01:00
$ cd path/to/animate.css/
$ sudo npm install
```
2012-07-20 08:57:12 +02:00
2016-03-22 14:27:37 +01:00
Next, run `gulp` to compile your custom builds. For example, if you want only some of the “attention seekers”, simply edit the `animate-config.json` file to select only the animations you want to use.
2012-07-20 08:57:12 +02:00
2013-11-12 00:32:40 +01:00
```javascript
2013-11-23 22:47:23 +01:00
"attention_seekers": {
"bounce": true,
"flash": false,
"pulse": false,
"shake": true,
2015-09-21 22:15:35 +02:00
"headShake": true,
2013-11-23 22:47:23 +01:00
"swing": true,
"tada": true,
2015-04-29 16:57:54 +02:00
"wobble": true,
"jello":true
2013-11-12 00:32:40 +01:00
}
```
2013-01-07 17:45:57 +01:00
2018-07-24 00:44:09 +02:00
## Accessibility
2019-02-19 11:01:31 +01:00
Animate.css supports the [`prefers-reduced-motion` media query ](https://webkit.org/blog/7551/responsive-design-for-motion/ ) so that users with motion sensitivity can opt out of animations. On supported platforms (currently Firefox, OSX Safari and iOS Safari), users can select "reduce motion" on their operating system preferences and it will turn off CSS transitions for them without any further work required.
2018-07-24 00:44:09 +02:00
2013-11-12 00:32:40 +01:00
## License
2017-11-16 00:20:46 +01:00
2013-11-12 00:32:40 +01:00
Animate.css is licensed under the MIT license. (http://opensource.org/licenses/MIT)
2013-01-07 17:45:57 +01:00
2019-02-09 18:25:10 +01:00
## Code of Conduct
This project and everyone participating in it is governed by the [Contributor Covenant Code of Conduct ](CODE_OF_CONDUCT.md ). By participating, you are expected to uphold this code. Please report unacceptable behavior to [callmeelton@gmail.com ](mailto:callmeelton@gmail.com ).
2013-11-12 00:32:40 +01:00
## Contributing
2017-11-16 00:20:46 +01:00
2018-10-17 22:01:51 +02:00
Pull requests are the way to go here. We only have two rules for submitting a pull request: match the naming convention (camelCase, categorised [fades, bounces, etc]) and let us see a demo of submitted animations in a [pen ](http://codepen.io ). That **last one is important** .