<New code>
jQuery //INIT:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
— loads jQuery library
jQuery //OUTPUT:
$( "#animateId" ).animate( {
width: 300 + "px" } );
— animates the element until it's width equals 300px
jQuery //OUTPUT:
$( "#animateId" ).animate( {
width: "+=50px" } );
— animates the element until it's
width is 50px greater than it started
jQuery //OUTPUT:
$( "#animateId" ).animate(
{ opacity: 0 } );
— fades out an element to invisibility
jQuery //OUTPUT:
$( "#animateId" ).animate(
{ opacity: 1 } );
— fades in an element from invisible to fully visible
jQuery //OUTPUT:
$( "#animateId" ).animate(
{ width: 0, opacity: 0 }, { duration: 600 } );
— shrinks and fades an element out over 600 milliseconds (0.6 s)
jQuery //OUTPUT:
$( "#animateId" ).stop();
— stops the animation immediately
jQuery //OUTPUT:
$( "#animateId" ).clearQueue();
— clears the animation queue for that element
Let's animate something...
Remember the four steps to animating things
-
Link to the jQuery library in the
<head>
of your page -
Give the element an
id
- If it is going to move, change the positioning mode of the animated element using CSS
- Trigger the animation as Javascript code
You can animate ANY CSS property that uses a number
Animating border-width:
Notice that the CSS code for border-width
had to convert to camelCase: borderWidth
:
$( '#button1Id' ).animate( { borderWidth: 40 + "px" } );
Animating font-size:
Notice that the CSS code for font-size
had to convert to camelCase: fontSize
:
$( '#button2Id' ).animate( { fontSize: 40 + "px" } );
Animating width:
Notice that using +=
will add 40px of width with eack click:
$( '#button3Id' ).animate( { width: "+=40px" } );
Animating height:
Notice that using +=
will add 40px of height with eack click:
$( '#button4Id' ).animate( { height: "+=40px" } );
Animating opacity:
Notice that this is a two-part animation: fade out, then fade back in:
$( '#button5Id' ).animate( { opacity: 0 } );
$( '#button5Id' ).animate( { opacity: 1 } );
There are more properties that you can animate if you check out the Learn more section
Combining animations into one step
There are plenty of times when you want to combine lots of animation steps into one.
For example, say I want to:
-
increase an image's width to 300px:
{ width: 300 + "px" }
- fade the image in from invisibility to full visibility: { opacity: 1 }
...all at the same time. This is possible because the animation information is held inside an object. So we can combine the object properties together:
var animationProperties = {
width: 500 + "px",
opacity: 1
};
$( '#msPacmanId' ).animate( animationProperties );
Or, for convenience, we can combine it all into one command:
$( '#msPacmanId' ).animate( {
width: 500 + "px",
opacity: 1
} );
A common problem: expanding from the top left corner
You will notice that in the example above, it appears that Ms. Pacman is growing from her top left corner instead of expanding from the middle, like we would expect.
This is because javascript measures things from the top left corner of an element. If it expands in width, that width is measured from there.
If we want to make something look like it is expanding from it's middle, We also have to move it up, and left at the same time.
$( '#msPacmanId' ).animate( {
top: "-=250px", // half the change in height
left: "-=250px", // half the change in width
width: 500 + "px",
opacity: 1
} );
This is a handy effect if you want to make something look like it is blowing up.
Learn more
- jQuery's .animate() api page
- w3school's jQuery Effects - Animation
- w3school's jQuery animate() Method