Swoosh In

Entrance & Kinetic · Animated · pure CSS

Each letter flies in along a curved CSS motion path, sweeping up from the lower-left, arcing over the top and banking with offset-rotate:auto before gliding down to land flat, staggered by index. The path ends with a horizontal tangent so glyphs un-bank to level exactly as they settle — a swooping, paper-plane entrance (per-letter markup).

Swoosh In

How it works

Swoosh In is an animated entrance & kinetic text effect rendered entirely in CSS. Each character is wrapped in its own span so it can animate independently — the HTML and JSX exports include that per-letter markup.

Controls

Swoosh In exposes 4 dedicated controls — Curve, Duration, Stagger and Hue — on top of the shared type controls (font, weight, letter-spacing and case). Open it in the generator to tune every value live, then copy the updated CSS.

CSS

/* Swoosh In — made with TEXT-FX · https://text-fx.app
 * HTML: each character is wrapped in a <span> — see the HTML export.
 * Font: 'Bungee', cursive (load from Google Fonts).
 */

.text-effect {
  font-family: 'Bungee', cursive;
  font-weight: 900;
  letter-spacing: 0px;
  text-transform: none;
}

.text-effect {
  color: hsl(306 72% 68%);
  white-space: pre;
}
.text-effect .fx-ch {
  display: inline-block;
  offset-path: path('M -127.5 42.5 C -76.5 -46.8, -23.8 0, 0 0');
  offset-rotate: auto;
  animation: text-effect-swoosh 1.02s cubic-bezier(0.22, 0.61, 0.36, 1) both;
  animation-delay: calc(var(--i) * 46ms);
}
.text-effect:hover .fx-ch {
  animation-name: text-effect-swoosh-r;
}

@keyframes text-effect-swoosh {
  0% { offset-distance: 0%; opacity: 0; transform: scale(0.72); }
  55% { opacity: 1; }
  100% { offset-distance: 100%; opacity: 1; transform: scale(1); }
}
@keyframes text-effect-swoosh-r {
  0% { offset-distance: 0%; opacity: 0; transform: scale(0.72); }
  55% { opacity: 1; }
  100% { offset-distance: 100%; opacity: 1; transform: scale(1); }
}

HTML

This effect needs the markup below (per-letter spans, SVG defs, or a data-text attribute).

<!-- Made with TEXT-FX · https://text-fx.app -->

<style>
.text-effect {
  font-family: 'Bungee', cursive;
  font-weight: 900;
  letter-spacing: 0px;
  text-transform: none;
}

.text-effect {
  color: hsl(306 72% 68%);
  white-space: pre;
}
.text-effect .fx-ch {
  display: inline-block;
  offset-path: path('M -127.5 42.5 C -76.5 -46.8, -23.8 0, 0 0');
  offset-rotate: auto;
  animation: text-effect-swoosh 1.02s cubic-bezier(0.22, 0.61, 0.36, 1) both;
  animation-delay: calc(var(--i) * 46ms);
}
.text-effect:hover .fx-ch {
  animation-name: text-effect-swoosh-r;
}

@keyframes text-effect-swoosh {
  0% { offset-distance: 0%; opacity: 0; transform: scale(0.72); }
  55% { opacity: 1; }
  100% { offset-distance: 100%; opacity: 1; transform: scale(1); }
}
@keyframes text-effect-swoosh-r {
  0% { offset-distance: 0%; opacity: 0; transform: scale(0.72); }
  55% { opacity: 1; }
  100% { offset-distance: 100%; opacity: 1; transform: scale(1); }
}
</style>

<div class="text-effect"><span class="fx-ch" style="--i:0;--n:9;--rev:8;--mid:4">Y</span><span class="fx-ch" style="--i:1;--n:9;--rev:7;--mid:4">o</span><span class="fx-ch" style="--i:2;--n:9;--rev:6;--mid:4">u</span><span class="fx-ch" style="--i:3;--n:9;--rev:5;--mid:4">r</span><span class="fx-ch" style="--i:4;--n:9;--rev:4;--mid:4"> </span><span class="fx-ch" style="--i:5;--n:9;--rev:3;--mid:4">t</span><span class="fx-ch" style="--i:6;--n:9;--rev:2;--mid:4">e</span><span class="fx-ch" style="--i:7;--n:9;--rev:1;--mid:4">x</span><span class="fx-ch" style="--i:8;--n:9;--rev:0;--mid:4">t</span></div>
Category
Entrance & Kinetic
Type
Animated
Browser support
CSS Motion Path (all modern browsers)
Capabilities
perLetter

Related Entrance & Kinetic effects