CSS Animations (original) (raw)

Last Updated : 07 Jan, 2025

CSS animations control the movement and appearance of elements on web pages. We can animate HTML elements without using JavaScript.

**CSS Animation Properties

CSS animations involve several key properties:

Property Description
@keyframes The @keyframes rule in CSS is used to specify the animation rule.
**animation-name It is used to specify the name of the @keyframes describing the animation.
**animation-duration It is used to specify the time duration it takes animation to complete one cycle.
**animation-timing-function It specifies how animations make transitions through keyframes. There are several presets available in CSS which are used as the value for the animation-timing-function like **linear, **ease,ease-in,**ease-out, and **ease-in-out.
**animation-delay It specifies the delay of the start of an animation.
**animation-iteration-count This specifies the number of times the animation will be repeated.
**animation-direction It defines the direction of the animation. animation direction can be **normal, **reverse, **alternate, and **alternate-reverse.
**animation-fill-mode It defines how styles are applied before and after animation. The animation fill mode can be none, forwards, backwards, or both.
**animation-play-state This property specifies whether the animation is running or paused.

@keyframes Rule

The @keyframes rule defines how an element's styles change over time during an animation.

**Syntax

@keyframes animation-name {
from {
/* Initial Styles /
}
to {
/
Final Styles */
}
}

<style>
    .box {
        width: 100px;
        height: 100px;
        background-color: blue;
        animation: changeColor 3s infinite;
    }

    @keyframes changeColor {
        from {
            background-color: blue;
        }

        to {
            background-color: green;
        }
    }
</style>

`

animation-name Property

The animation-name property specifies the name of the @keyframes animation to apply to an element.

**Syntax

**animation-name: animationName;

HTML `

<style>
    .box {
        width: 100px;
        height: 100px;
        background-color: blue;
        animation-name: moveRight;
        animation-duration: 2s;
        animation-iteration-count: infinite;
    }

    @keyframes moveRight {
        from {
            transform: translateX(0);
        }
        to {
            transform: translateX(200px);
        }
    }
</style>

`

**In this example

animation-timing-function property

The animation-timing-function property controls the speed curve of an animation, defining how the animation progresses over its duration.

**Syntax

animation-timing-function: timingFunction;

HTML `

<style>
    .box {
        width: 100px;
        height: 100px;
        background-color: blue;
        animation-name: slide;
        animation-duration: 3s;
        animation-timing-function: ease-in;
        animation-iteration-count: infinite;
    }

    @keyframes slide {
        from {
            transform: translateX(0);
        }
        to {
            transform: translateX(300px);
        }
    }
</style>

`

**In this example

animation-delay property

The animation-delay property specifies a delay before an animation starts, controlling when the animation begins after being triggered.

Syntax

animation-delay: time;

HTML `

<style>
    .box {
        width: 100px;
        height: 100px;
        background-color: blue;
        animation-name: fadeIn;
        animation-duration: 2s;
        animation-delay: 1s;
        animation-iteration-count: infinite;
    }
    @keyframes fadeIn {
        from { opacity: 0; }
        to { opacity: 1; }
    }
</style>

`

**In this example

animation-iteration-count property

The animation-iteration-count property specifies how many times an animation should repeat.

**Syntax

animation-iteration-count: number | infinite;

HTML `

<style>
    .box {
        width: 100px;
        height: 100px;
        background-color: blue;
        animation: bounce 2s infinite;
    }
    @keyframes bounce {
        0% {
            transform: translateY(0);
        }

        50% {
            transform: translateY(-50px);
        }

        100% {
            transform: translateY(0);
        }
    }
</style>

`

**In this example

animation-direction property

The animation-direction property specifies whether an animation should play forward, backward, or alternate between the two directions.

**Syntax

animation-direction: normal | reverse | alternate | alternate-reverse;

HTML `

<style>
    .box {
        width: 100px;
        height: 100px;
        background-color: blue;
        animation: move 2s infinite;
        animation-direction: alternate;
    }
    @keyframes move {
        from {
            transform: translateX(0);
        }

        to {
            transform: translateX(200px);
        }
    }
</style>

`

**In this example

animation-fill-mode property

The animation-fill-mode property specifies how a CSS animation should apply styles to its target before and after it is executing.

**Syntax

animation-fill-mode: none | forwards | backwards | both;

HTML `

<style>
    .box {
        width: 100px;
        height: 100px;
        background-color: blue;
        animation: move 3s forwards;
    }
    @keyframes move {
        from {
            transform: translateX(0);
        }
        to {
            transform: translateX(200px);
        }
    }
</style>

`

**In this example

animation-play-state property

The animation-play-state property controls whether an animation is running or paused.

**Syntax

**animation-play-state: running | paused;

HTML `

<style>
    .box {
        width: 100px;
        height: 100px;
        background-color: blue;
        animation: spin 4s linear infinite;
        animation-play-state: paused;
    }

    .box:hover {
        animation-play-state: running;
    }

    @keyframes spin {
        from {
            transform: rotate(0deg);
        }
        to {
            transform: rotate(360deg);
        }
    }
</style>

`

**In this example

Animation Shorthand Property

The animation shorthand property allows you to set all animation-related properties in a single declaration, making your CSS code cleaner and more concise.

**Syntax

**animation: [animation-name] [animation-duration] [animation-timing-function]
[animation-delay] [animation-iteration-count] [animation-direction] [animation-fill-mode]
[animation-play-state];

HTML `

<style>
    .box {
        width: 100px;
        height: 100px;
        background-color: blue;
        animation: move 2s ease-in 1s infinite alternate forwards;
    }
    @keyframes move {
        from {
            transform: translateX(0);
            background-color: blue;
        }
        to {
            transform: translateX(200px);
            background-color: green;
        }
    }
</style>

`

**In this example

Best Practices for CSS Animations