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;
}
}