Tailwind UI Pattern Registry for humans and agents

stagger character entrance animation heading reveal hero heading entrance on page load logo or brand name reveal short CTA text animation onboarding step label text appears all at once and feels static Framer Motion / GSAP overhead for a simple entrance need per-character timing without JavaScript

Character Stagger

Fetch snippet JSON: curl https://webspire.de/snippets/text/char-stagger.json
Format
Preview
Stage Background
Customize

Quick Start

<h1 class="char-stagger"><span class="char" style="--char-index:0">H</span><span class="char" style="--char-index:1">e</span><span class="char" style="--char-index:2">l</span><span class="char" style="--char-index:3">l</span><span class="char" style="--char-index:4">o</span></h1>

Details

Tailwind
v4.x
Browser
baseline-2024
A11y
prefers-reduced-motion
Size
435 bytes · 22 lines
Custom Properties
--char-index
Classes
.char-stagger.char
stagger character entrance animation heading reveal

Each .char span reads --char-index to calculate its animation-delay. Wrap every character manually for short headings, or use a small textContent.split('') loop for longer text.

Hero heading

<h1 class="char-stagger text-5xl font-bold">
  <span class="char" style="--char-index: 0">H</span>
  <span class="char" style="--char-index: 1">e</span>
  <span class="char" style="--char-index: 2">l</span>
  <span class="char" style="--char-index: 3">l</span>
  <span class="char" style="--char-index: 4">o</span>
</h1>

JS split helper (optional)

document.querySelectorAll('.char-stagger').forEach(el => {
  el.innerHTML = [...el.textContent].map((ch, i) =>
    `<span class="char" style="--char-index:${i}">${ch === ' ' ? '&nbsp;' : ch}</span>`
  ).join('');
});