JSFiddle - React, Tailwind, and code Playground

by joepenzo

HTML

<h1 class="block-reveal" style="--reveal-speed: 2;">
    <span style="--delay: 2.0; --color: #c0ffee;">Cum sociis natoque</span>
    <span style="--delay: 2.2; --color: #c0ffee;">penatibus et</span>
</h1>

<br><br>

<h1 class="block-reveal">
   <span style="--delay: 1.0">Vestibulum id ligula porta</span>
   <span style="--delay: 1.2">felis euismod semper.</span>
   <span style="--delay: 1.4">Praesent commodo cursus magna,</span>
   <span style="--delay: 1.6">vel scelerisque nisl consectetur et.</span>
</h1>

<br><br>

<h2 class="block-reveal" style="--reveal-speed: 0.75">
    <span style="--delay: 1.0; --color: #ff0000">Een</span>
    <span style="--delay: 1.1; --color: #00ff00">Twee</span>
    <span style="--delay: 1.2; --color: #0000ff">Drie</span>
</h2>

SCSS

body {
    background: #fff;
    color: #000;
}

h1 {
  max-width: 700px;
  display: block;
}

* {
  box-sizing: border-box;
}


:root {
  --base-delay: 0.5;
  --reveal-speed: 0.75;
  --stagger: 0.1;
}


.block-reveal {
  align-items: flex-start;
  display: inline-flex;
  flex-direction: column;
  font-size: 3.25rem;

  span {
    animation: show-text calc(var(--reveal-speed, 0.5) * 1s) calc(var(--delay, 1) * 1s) steps(1) both;
    overflow: hidden;
    position: relative;

    &:after {
      content: '';
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      background: var(--color, red);
      position: absolute;
      animation: block-reveal calc(var(--reveal-speed, 0.5) * 1s) calc(var(--delay, 1) * 1s) both;
    }
  }
}

 

@keyframes block-reveal {
  0% {
    transform: translate(-110%, 0);
  }

  45%, 55% {
    transform: translate(0, 0);
  }

  100% {
    transform: translate(110%, 0);
  }
}

@keyframes show-text {
  0% {
    color: transparent;
  }

  50%,
  100% {
    color: #000;
  }
}