multiline typing animation

multi-line typing animation

by Peter Udem

HTML

<!-- original by https://jsfiddle.net/leaverou/7rnQP/ -->

<div class="container">
<!-- container div is required to set absolute positions within it, so that .typing and .hiders exactly overlap -->

  <p class="typing">
    This paragraph of text will be animated with a "typewriter" style effect, and it will continue to work even if it splits across multiple lines.  Well, in this case, up to a maximum of 5 lines, but you get the picture.
  </p>

  <div class="hiders">
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
  </div>

</div>

CSS

@keyframes typing {
    from { width: 100% }
    to { width: 0 }
    
}

.container {
  position: relative;
  font-family: Consolas, monospace;  
}

.typing {
  position: absolute;
  top: 0;
  margin: 0;
  z-index: -1;
}

.hiders {
  margin: 0;
  position: absolute;
  top: 0;
  width: 100%;
}

.hiders p {
  position: relative; 
  clear: both; 
  margin: 0;
  float: right; /* makes animation go left-to-right */
  width:0; /* graceful degradation: if animation doesn't work, these are invisible by default */
  background: white; /* same as page background */
  animation: typing 2s steps(30, end);
  animation-fill-mode: both;  /* load first keyframe on page load, leave on last frame at end */
}
  
.hiders p:nth-child(2) {
  animation-delay: 2s;
}
.hiders p:nth-child(3) {
  animation-delay: 4s;
}
.hiders p:nth-child(4) {
  animation-delay: 6s;
}
.hiders p:nth-child(5) {
  animation-delay: 8s;
}