The jQuery animate()
method is used to create custom animations.
Syntax:
$(selector).animate({params},speed,callback);
The required params parameter defines the CSS properties to be animated.
The optional speed parameter specifies the duration of the effect. It can take the following values: "slow", "fast", or milliseconds.
The optional callback parameter is a function to be executed after the animation completes.
The following example demonstrates a simple use of the animate()
method; it moves
a <div> element to the right, until it has reached a left property of 250px:
$("button").click(function(){
$("div").animate({left: '250px'});
});
Notice that multiple properties can be animated at the same time:
$("button").click(function(){
$("div").animate({
left: '250px',
opacity: '0.5',
height: '150px',
width: '150px'
});
});
It is also possible to define relative values (the value is then relative to the element's current value). This is done by putting += or -= in front of the value:
$("button").click(function(){
$("div").animate({
left: '250px',
height: '+=150px',
width: '+=150px'
});
});
You can even specify a property's animation value as "show
", "hide
", or "toggle
":
$("button").click(function(){
$("div").animate({
height: 'toggle'
});
});
By default, jQuery comes with queue functionality for animations.
This means that if you write multiple animate()
calls after each other,
jQuery creates an "internal" queue with these method calls. Then it runs the
animate calls ONE by ONE.
So, if you want to perform different animations after each other, we take advantage of the queue functionality:
$("button").click(function(){
var div = $("div");
div.animate({left: '100px'}, "slow");
div.animate({fontSize: '3em'}, "slow");
});