01 — Loaders

Rotating Spinner

The most recognizable loading indicator. A circle with a single colored top border, rotating forever. The rest of the border stays light so the user sees the spin clearly.

border-top-color + rotate 360 LOADER
<div class="spinner"></div>
02 — Loaders

Bouncing Dots

Three dots that fade and scale in sequence — a softer, more "thinking" loader. Each dot uses the same keyframe but gets a different animation-delay.

animation-delay stagger LOADER
<div class="dots">
  <span></span>
  <span></span>
  <span></span>
</div>
03 — Loaders

Bar Wave

An audio-equalizer style loader — five bars that grow and shrink in a wave. transform-origin: bottom anchors the scale so they grow upward.

scaleY + transform-origin bottom LOADER
<div class="bars">
  <span></span><span></span><span></span>
  <span></span><span></span>
</div>
04 — Entrances

Fade-In on Load

An element that rises slightly as it fades in. Use this for hero text, cards, and anything you want to feel "placed" instead of suddenly visible.

opacity + translateY + forwards ENTRANCE
I fade and rise into place.
<div class="fade-card">I fade and rise into place.</div>
05 — Entrances

Slide-In from Left

Same structure as fade-in, but uses translateX for a horizontal entrance. The spring easing (cubic-bezier) gives it a tiny overshoot.

translateX + spring easing ENTRANCE
I slide in from the left.
<div class="slide-card">I slide in from the left.</div>
06 — Entrances

Staggered List

A list where each item appears slightly after the previous one — much more elegant than a single block flash. Uses :nth-child() + incremental animation-delay.

nth-child + animation-delay stair ENTRANCE
  • First item appears
  • Second comes next
  • Third follows
  • Fourth arrives
  • Fifth lands last
<ul class="stagger-list">
  <li>First item appears</li>
  <li>Second comes next</li>
  <li>Third follows</li>
  <li>Fourth arrives</li>
  <li>Fifth lands last</li>
</ul>
07 — Always-On

Gradient Flow

A multi-color gradient clipped to text, with its background-position animating in a loop. Great for hero headlines and creating a sense of movement without distracting motion.

background-clip: text + bg-position loop LOOP

Make it flow.

<h2 class="gradient-text">Make it flow.</h2>
08 — Always-On

Floating Object

An element that gently levitates in a loop, with a ground shadow that breathes in the opposite direction. Two separate animations keep the object and its shadow in sync.

translateY + rotate + inverted shadow LOOP
<div class="float-wrap">
  <div class="float-obj"></div>
</div>
09 — Always-On

Neon Glow

Stacked text-shadows layered with increasing blur radii create a neon-sign effect. An alternate direction keyframe makes the glow pulse.

layered text-shadow + alternate keyframes LOOP
Glow up.
<div class="neon">Glow up.</div>
10 — Text Effects

Typewriter

Text that "types" itself in, with a blinking caret. Uses the steps() timing function so the width grows one character at a time rather than smoothly.

steps() easing + ch units TEXT
Hello, I’m typing…
<div class="typer">Hello, I'm typing...</div>
11 — Text Effects

Marquee

An infinite horizontal scroll — no JavaScript. The trick is to duplicate the content inside the track so translating -50% seams perfectly. Edge fade comes from a mask-image gradient.

duplicated content + translateX(-50%) TEXT
DESIGN BUILD SHIP LEARN REPEAT DESIGN BUILD SHIP LEARN REPEAT
<div class="marquee">
  <div class="marquee-track">
    <span>DESIGN</span>
    <span>BUILD</span>
    <span>SHIP</span>
    <!-- IMPORTANT: duplicate the same content
         so translating -50% loops seamlessly -->
    <span>DESIGN</span>
    <span>BUILD</span>
    <span>SHIP</span>
  </div>
</div>
12 — Text Effects

Stroke Draw (SVG Signature)

An SVG path that draws itself as if being written. The trick is stroke-dasharray + stroke-dashoffset — animate the offset from the path length down to zero and it appears to draw in.

stroke-dasharray / dashoffset animation SVG
<svg class="signature" viewBox="0 0 240 110">
  <path d="M 20 70 C 30 20, 55 10, 70 60
           S 95 90, 110 60
           Q 125 25, 140 55
           T 170 65 L 210 30"/>
</svg>