Open In App

How to Create Text Changing Animation Effect using CSS ?

Almost any website that we visit today uses some kind of text animation to engage with its users. Generally, all kinds of text-animations are made using plain or vanilla JavaScript or by using some third-party JavaScript libraries. But there are some animations that can be made using only CSS. One of them is changing the word text animation. In this type of animation, a word is selected to change after a certain time interval. This is slightly older animation and is one of the earliest text animations that were used a decade ago.

Approach: The approach is to use keyframes to change word at a certain frame. The word can be set using the content property.



HTML Code: In this section, we have heading wrapped inside a <h1> tag. We also have a span which will populate later using CSS.




<!DOCTYPE html>
<html lang="en">
  
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content=
        "width=device-width, initial-scale=1.0" />
    <title>Text Animation</title>
</head>
  
<body>
    <h1>I love <span> </span></h1>
</body>
  
</html>

CSS Code:



Tip: You can set the total time according to need. But generally, it is recommended to use a time which is a multiple of the total number of words that you want to change. Like in our case, we have three words and we have used 3s as total time. You can use 6, 9, 12… so on. Setting time as multiple of the total number of words will ensure that each word gets displayed for an equal amount of time.




<style>
    body {
        background: green;
    }
  
    h1 {
        display: flex;
        justify-content: center;
        color: white;
    }
  
    span::before {
        content: "Geeks";
        animation: animate infinite 3s;
        padding-left: 10px;
    }
  
    @keyframes animate {
  
        0% {
            content: "Geeks";
        }
  
        50% {
            content: "for";
        }
  
        75% {
            content: "Geeks";
        }
    }
</style>

Complete Code: It is the combination of the above two sections of code.




<!DOCTYPE html>
<html lang="en">
  
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content=
        "width=device-width, initial-scale=1.0" />
    <title>Text Animation</title>
      
    <style>
        body {
            background: green;
        }
  
        h1 {
            display: flex;
            justify-content: center;
            color: white;
        }
  
        span::before {
            content: "Geeks";
            animation: animate infinite 3s;
            padding-left: 10px;
        }
  
        @keyframes animate {
  
            0% {
                content: "Geeks";
            }
  
            50% {
                content: "for";
            }
  
            75% {
                content: "Geeks";
            }
        }
    </style>
</head>
  
<body>
    <h1>I love <span> </span></h1>
</body>
  
</html>

Output:


Article Tags :