Home

Text Reveal

Updated Feb, 2025

Animations

text-reveal.tsx

import './styles.css'
import React from 'react'
export function TextReveal() {
return (
<h1 className={'h1'}>
{[...'Animations'].map((l, i) => (
<span
key={`${i}-${l}}`}
className={'letter'}
style={{ '--index': i }}
>
{l}
</span>
))}
</h1>
)
}
// styles.css
.h1 {
font-size: clamp(32px, 5vw, 48px);
font-weight: 600;
letter-spacing: -0.05em;
overflow: hidden;
color: white;
}
.letter {
display: inline-block;
animation: yTranslate 1.3s cubic-bezier(.075, .82, .165, 1);
animation-delay: calc(0.03s * var(--index));
animation-fill-mode: backwards;
}
.button {
width: 100%;
margin-top: 24px;
position: relative;
height: 32px;
font-size: 14px;
padding-inline: 12px;
font-weight: 500;
border-radius: 9999px;
background: #fff;
box-shadow:
0 0 0 1px rgba(0, 0, 0, 0.08),
0px 2px 2px rgba(0, 0, 0, 0.04);
}
@keyframes yTranslate {
from {
transform: translateY(100%)
}
to {
transform: translateY(0);
}
}