CSS Animations
CSS Animation allows us to animate HTML elements without JavaScript or Flash.
In this tutorial we will will learn about the following properties:
@keyframes
animation-name
animation-duration
animation-delay
animation-iteration-count
animation-direction
animation-timing-function
animation-fill-mode
animation
What are CSS Animations?
An CSS animation lets an element gradually change from one style to another.
You can change as many CSS properties you want, as many times you want.
To use CSS animation, you must first specify some keyframes for the animation.
Keyframes hold what styles the element will have at certain times.
@keyframes
When you write CSS inside @keyframes then its change according to time.
To get an animation to work, you must bind the animation to an element.
The following example binds the “example” animation to the
See the Pen animation 1 by Arpit (@soniarpit) on CodePen.
Note: The animation-duration
property defines how long time an animation should take to complete. If the animation-duration
property is not specified, no animation will occur, because the default value is 0s (0 seconds).
In the example above we have specified when the style will change by using the keywords “from” and “to” (which represents 0% (start) and 100% (complete)).
It is also possible to use percent. By using percent, you can add as many style changes as you like.
The following example will change the background-color of the
See the Pen animation 2 by Arpit (@soniarpit) on CodePen.
The following example will change both the background-color and the position of the
try this example
/* The animation code */
@keyframes example {
0% {background-color:red; left:0px; top:0px;}
25% {background-color:yellow; left:200px; top:0px;}
50% {background-color:blue; left:200px; top:200px;}
75% {background-color:green; left:0px; top:200px;}
100% {background-color:red; left:0px; top:0px;}
}
/* The element to apply the animation to */
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
}
Delay an Animation
The animation-delay
property specifies a delay for the start of an animation.
The following example has a 2 seconds delay before starting the animation
See the Pen animation 3 by Arpit (@soniarpit) on CodePen.
Negative values are also allowed. If using negative values, the animation will start as if it had already been playing for N seconds.
In the following example, the animation will start as if it had already been playing for 2 seconds
try this example
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-delay: -2s;
}
Set How Many Times an Animation Should Run
The animation-iteration-count
property used to specify the number of times an animation should run.
The following example will run the animation 3 times before it stops:
See the Pen animation 4 by Arpit (@soniarpit) on CodePen.
The following example uses the value “infinite” to make the animation continue for ever
try this example
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-iteration-count: infinite;
}
Run Animation in Reverse Direction or Alternate Cycles
The animation-direction
property specifies whether an animation should be played forwards, backwards or in alternate cycles.
The animation-direction property can have the following values:
normal
- The animation is played as normal (forwards). This is defaultreverse
- The animation is played in reverse direction (backwards)alternate
- The animation is played forwards first, then backwardsalternate-reverse
- The animation is played backwards first, then forwards
The following example will run the animation in reverse direction (backwards):
See the Pen animation 5 by Arpit (@soniarpit) on CodePen.
change the value to animation-direction and try example
-
animation-direction: alternate;
animation-direction: alternate-reverse
;
Specify the fill-mode For an Animation
CSS animations do not affect an element before the first keyframe is played or after the last keyframe is played. The animation-fill-mode property can override this behavior.
The animation-fill-mode
property specifies a style for the target element when the animation is not playing (before it starts, after it ends, or both).
The animation-fill-mode property can have the following values:
none
- Default value. Animation will not apply any styles to the element before or after it is executingforwards
- The element will retain the style values that is set by the last keyframe (depends on animation-direction and animation-iteration-count)backwards
- The element will get the style values that is set by the first keyframe (depends on animation-direction), and retain this during the animation-delay periodboth
- The animation will follow the rules for both forwards and backwards, extending the animation properties in both directions
The following example lets the
See the Pen animation 6 by Arpit (@soniarpit) on CodePen.
try this examples
div {
width: 100px;
height: 100px;
background: red;
position: relative;
animation-name: example;
animation-duration: 3s;
animation-delay: 2s;
animation-fill-mode: backwards;
}
div {
width: 100px;
height: 100px;
background: red;
position: relative;
animation-name: example;
animation-duration: 3s;
animation-delay: 2s;
animation-fill-mode: both;
}
Animation Shorthand Property
Instead of writing like this,
div {
animation-name: example;
animation-duration: 5s;
animation-timing-function: linear;
animation-delay: 2s;
animation-iteration-count: infinite;
animation-direction: alternate;
}
You can also write like this,
div {
animation: example 5s linear 2s infinite alternate;
}
Previous: CSS Position
Next: CSS Tooltip