HTML-CSS: Typewriter effect

HTML-CSS : Exercise-11 with Solution

Using HTML, CSS, JavaScript create a typewriter effect animation.

  • Define two animations, typing to animate the characters and blink to animate the caret.
  • Use the :after pseudo-element to add the caret to the container element.
  • Use JavaScript to set the text for the inner element and set the --characters variable containing the character count. This variable is used to animate the text.
  • Use white-space: nowrap and overflow: hidden to make content invisible as necessary.

HTML Code:

<!--License: https://bit.ly/3GjrtVF-->
<!DOCTYPE html>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>Using HTML, CSS, JavaScript create a typewriter effect animation</title>
<div class="typewriter-effect">
  <div class="text" id="typewriter-text"></div>

CSS Code:

.typewriter-effect {
  display: flex;
  justify-content: center;
  font-family: monospace;

.typewriter-effect > .text {
  max-width: 0;
  animation: typing 3s steps(var(--characters)) infinite;
  white-space: nowrap;
  overflow: hidden;

.typewriter-effect:after {
  content: " |";
  animation: blink 1s infinite;
  animation-timing-function: step-end;

@keyframes typing {
  100% {
    max-width: calc(var(--characters) * 1ch);

@keyframes blink {
  100% {
    opacity: 1;
  25% {
    opacity: 0;

JavaScript Code:

HTML-CSS Editor:

See the Pen html-css-practical-exercises by w3resource (@w3resource) on CodePen.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.

HTML-CSS: Tips of the Day

How to align this span to the right of the div?

HTML Code:

<div class="title">
<span class="name">Cumulative performance</span>
<span class="date">20/02/2011</span>

CSS Code:

.title .date { float:right }
.title .name { float:left } 

Ref: https://bit.ly/3HSkWnb