How to Create Text Changing Animation Effect using CSS ? - GeeksforGeeks

18 Jun, 2020
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:
Step 1: Do some basic style like background-color, text-color, margins, padding etc.
Step 2: Now, use before select/or to set the content of span to an initial word.
Step 3: Use animation property to set the total time for the animation.
Step 4: Now, use keyframes to change the content property that was set in before selector for each frame.
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:
Attention reader! Don’t stop learning now. Get hold of all the important HTML concepts with the Web Design for Beginners | HTML  course.
CSS-Misc
HTML-Misc
CSS
HTML
Web Technologies
Web technologies Questions
HTML
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
How to set space between the flexbox ?
Design a web page using HTML and CSS
How to apply style to parent if it has child with CSS?
Create a Responsive Navbar using ReactJS
Form validation using jQuery
How to set the default value for an HTML <select> element ?
Hide or show elements in HTML using display property
How to set input type date in dd-mm-yyyy format using HTML ?
HTML Cheat Sheet - A Basic Guide to HTML
REST API (Introduction)