- CSS Tutorial
- CSS Introduction
- CSS Syntax
- CSS Comments
- CSS Selectors
- CSS Fonts
- CSS Colors
- CSS Backgrounds
- CSS Box Model
- CSS Borders
- CSS Margins
- CSS Padding
- CSS Text
- CSS Images
- CSS Links
- CSS Lists
- CSS Tables
- CSS Outline
- CSS Icons
- CSS Display
- CSS max-witdh
- CSS Position
- CSS z-index
- CSS Overflow
- CSS Float
- CSS Align
- CSS Opacity
- CSS Navigation Bar
- CSS Dropdowns
- CSS Forms
- CSS Units
- CSS !important
- CSS Specificity
- CSS Combinators
- CSS inline-block
- CSS Hover
- CSS Cursors
- CSS Selectors
- CSS Type Selector
- CSS Class Selector
- CSS ID Selector
- CSS Attribute Selector
- CSS Pseudo-class Selector
- CSS Pseudo-element Selector
- CSS Universal Selector
- CSS Advanced
- CSS Text Formatting
- CSS Gradients
- CSS Shadow
- CSS Rounded Corners
- CSS Text Effects
- CSS 2D Transform
- CSS 3D Transform
- CSS Border Images
- CSS Inherit
- CSS Transitions
- CSS Animations
- CSS Box Sizing
- CSS Tooltip
- CSS Masking
- CSS Pagination
- CSS Styling Images
- CSS object-fit
- CSS object-position
- CSS Buttons
- CSS Multiple Columns
- CSS Variables
- CSS Flexbox
- CSS Grid
- CSS Media Queries
CSS Animations
CSS animations allow you to create more complex and dynamic animations than transitions, enabling you to animate elements through keyframes and control their timing, duration, and appearance. Here's a comprehensive guide on how to use CSS animations effectively:
Keyframe Animation Syntax
To create CSS animations, you define keyframes using @keyframes and then apply those keyframes to elements using the animation property.
Syntax for Keyframes
@keyframes animationName {
from {
/* Initial styles */
}
to {
/* Final styles */
}
/* Or define keyframes at specific percentages */
0% {
/* Styles at 0% of the animation */
}
50% {
/* Styles at 50% of the animation */
}
100% {
/* Styles at 100% of the animation */
}
}
Applying Animations to Elements
Once you've defined keyframes, you can apply the animation to elements using the animation property.
Syntax for Animation Property
.element {
animation-name: animationName;
animation-duration: 2s; /* Duration of the animation */
animation-timing-function: ease; /* Timing function */
animation-delay: 0s; /* Delay before the animation starts */
animation-iteration-count: 1; /* Number of times the animation should repeat */
animation-direction: normal; /* Direction of the animation */
animation-fill-mode: forwards; /* How the element should be styled after the animation ends */
animation-play-state: running; /* Whether the animation is running or paused */
}
Animation Properties
1. animation-name
Specifies the name of the keyframes to use for the animation.
2. animation-duration
Specifies the duration of the animation.
3. animation-timing-function
Specifies the timing function for the animation (e.g., ease, linear, ease-in, ease-out, ease-in-out, cubic-bezier()).
4. animation-delay
Specifies the delay before the animation starts.
5. animation-iteration-count
Specifies the number of times the animation should repeat (infinite for indefinite repetition).
6. animation-direction
Specifies the direction of the animation (normal, reverse, alternate, alternate-reverse).
7. animation-fill-mode
Specifies how the element should be styled after the animation ends (none, forwards, backwards, both).
8. animation-play-state
Specifies whether the animation is running or paused (running, paused).
Example of CSS Animation
Let's create a simple CSS animation that moves a box across the screen:
@keyframes slide {
0% {
transform: translateX(0);
}
100% {
transform: translateX(100px);
}
}
.box {
width: 100px;
height: 100px;
background-color: blue;
animation-name: slide;
animation-duration: 2s;
animation-timing-function: ease;
animation-delay: 0s;
animation-iteration-count: infinite;
animation-direction: alternate;
}
Animating Multiple Properties
You can animate multiple properties within the same keyframe animation:
@keyframes changeColorAndSize {
0% {
width: 100px;
height: 100px;
background-color: red;
}
50% {
width: 200px;
height: 200px;
background-color: blue;
}
100% {
width: 100px;
height: 100px;
background-color: green;
}
}
.element {
animation-name: changeColorAndSize;
animation-duration: 3s;
animation-timing-function: ease-in-out;
animation-iteration-count: infinite;
}
Using @keyframes
Keyframes allow you to define more complex animations by specifying intermediate styles at different points in the animation:
@keyframes pulse {
0% {
transform: scale(1);
}
50% {
transform: scale(1.2);
}
100% {
transform: scale(1);
}
}
.element {
animation-name: pulse;
animation-duration: 1s;
animation-timing-function: ease-in-out;
animation-iteration-count: infinite;
}
Controlling Animation States
You can control animation states using JavaScript by toggling the animation-play-state property:
let element = document.querySelector('.element');
element.addEventListener('mouseenter', function() {
element.style.animationPlayState = 'paused';
});
element.addEventListener('mouseleave', function() {
element.style.animationPlayState = 'running';
});
Tips for Using CSS Animations
- Performance: Be mindful of performance, especially with complex or continuous animations.
- Browser Compatibility: