Just-add-water CSS animation
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.
To install via Bower, simply do the following:
$ bower install animate.css --save
or you can install via npm:
$ npm install animate.css --save
- Include the stylesheet on your document's
<head>
<head>
<link rel="stylesheet" href="animate.min.css">
</head>
Instead of installing you may use the remote version (hosted by CDNJS):
<head>
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/animate.css@3.5.2/animate.min.css">
<!-- or -->
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css">
</head>
You may generate a SRI hash of that particular version and then use it to ensure the file's integrity; also you can make anonymous requests to CDN by setting the corresponding crossorigin
attribute:
<head>
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/animate.css@3.5.2/animate.min.css"
integrity="sha384-OHBBOqpYHNsIqQy8hL1U+8OXf9hH6QRxi0+EODezv82DfnZoV7qoHAZDwMwEJvSw"
crossorigin="anonymous">
<!-- or -->
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css"
integrity="sha384-OHBBOqpYHNsIqQy8hL1U+8OXf9hH6QRxi0+EODezv82DfnZoV7qoHAZDwMwEJvSw"
crossorigin="anonymous">
</head>
-
Add the class
animated
to the element you want to animate. You may also want to include the classinfinite
for an infinite loop. -
Finally you need to add one of the following classes:
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 |
Full example:
<h1 class="animated infinite bounce">Example</h1>
Check out all the animations here!
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!
<head>
<link rel="stylesheet" href="animate.min.css">
</head>
or use the version hosted by CDNJS
<head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css">
</head>
You can do a whole bunch of other stuff with animate.css when you combine it with jQuery or add your own CSS rules. Dynamically add animations using jQuery with ease:
$('#yourElement').addClass('animated bounceOutLeft');
You can also detect when an animation ends:
// See https://github.com/daneden/animate.css/issues/644
var animationEnd = (function(el) {
var animations = {
animation: 'animationend',
OAnimation: 'oAnimationEnd',
MozAnimation: 'mozAnimationEnd',
WebkitAnimation: 'webkitAnimationEnd',
};
for (var t in animations) {
if (el.style[t] !== undefined) {
return animations[t];
}
}
})(document.createElement('div'));
$('#yourElement').one(animationEnd, doSomething);
View a video tutorial on how to use Animate.css with jQuery here.
Note: jQuery.one()
is used when you want to execute the event handler at most once. More information here.
You can also extend jQuery to add a function that does it all for you:
$.fn.extend({
animateCss: function(animationName, callback) {
var animationEnd = (function(el) {
var animations = {
animation: 'animationend',
OAnimation: 'oAnimationEnd',
MozAnimation: 'mozAnimationEnd',
WebkitAnimation: 'webkitAnimationEnd',
};
for (var t in animations) {
if (el.style[t] !== undefined) {
return animations[t];
}
}
})(document.createElement('div'));
this.addClass('animated ' + animationName).one(animationEnd, function() {
$(this).removeClass('animated ' + animationName);
if (typeof callback === 'function') callback();
});
return this;
},
});
And use it like this:
$('#yourElement').animateCss('bounce');
or;
$('#yourElement').animateCss('bounce', function() {
// Do somthing after animation
});
You can use pure javascript to add a function that does it all for you:
HTMLElement.prototype.animateCss = function(animationName, callback) {
var element = this;
// Method to add animation class in element
var addClass = function(el, cn) {
if (el.classList) {
el.classList.add(cn);
} else {
el.className += ' ' + cn;
}
};
// Method to remove animation class in element
var removeClass = function(el, cn) {
if (el.classList) {
el.classList.remove(cn);
} else {
var removeClassPattern = new RegExp('(' + cn.split(' ').join('|') + ')', 'gi');
el.className = el.className.replace(removeClassPattern, '');
}
};
// Get animation event
var animationEnd = (function(el) {
var animations = {
animation: 'animationend',
OAnimation: 'oAnimationEnd',
MozAnimation: 'mozAnimationEnd',
WebkitAnimation: 'webkitAnimationEnd',
};
for (var t in animations) {
if (el.style[t] !== undefined) {
return animations[t];
}
}
})(document.createElement('div'));
// Add animate class
addClass(element, 'animated');
addClass(element, animationName);
// Add animation event end
var animationEndCallback = function() {
removeClass(element, animationName);
removeClass(element, 'animated');
// Remove event
element.removeEventListener(animationEnd, animationEndCallback);
if (typeof callback === 'function') callback();
};
element.addEventListener(animationEnd, animationEndCallback);
return this;
};
And use it like this:
document.querySelector('#yourElement').animateCss('bounce');
or;
document.querySelector('#yourElement').animateCss('bounce', function() {
// do something after animation
});
or;
document.getElementById('yourElement').animateCss('bounce');
or;
document.getElementById('yourElement').animateCss('bounce', function() {
// do something after animation
});
You can change the duration of your animations, add a delay or change the number of times that it plays:
#yourElement {
-vendor-animation-duration: 3s;
-vendor-animation-delay: 2s;
-vendor-animation-iteration-count: infinite;
}
Note: be sure to replace "vendor" in the CSS with the applicable vendor prefixes (webkit, moz, etc)
Animate.css is powered by gulp.js, and you can create custom builds pretty easily. First of all, you’ll need Gulp and all other dependencies:
$ cd path/to/animate.css/
$ sudo npm install
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.
"attention_seekers": {
"bounce": true,
"flash": false,
"pulse": false,
"shake": true,
"headShake": true,
"swing": true,
"tada": true,
"wobble": true,
"jello":true
}
Animate.css is licensed under the MIT license. (http://opensource.org/licenses/MIT)
Pull requests are the way to go here. I apologise in advance for the slow action on pull requests and issues. I 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. That last one is important.