Skip to content

No.395 · Text Animations· New

Outline Text

Big hairline lettering that fills with ink: word by word under the pointer, line by line as you scroll, as a stack of outlines that lean away from the pointer, or in rows of outline and solid words sliding past each other.

The prompt

Copy this text

Automatic copying is unavailable. Copy the selected text using your device’s copy command.

Written for the variant you picked above: Hover fill

Build big poster lettering drawn as hairlines (transparent text with a 1.5px -webkit-text-stroke in the ink colour) that fills with solid ink, in the single effect selected below. Inter 800, uppercase, -0.035em, 0.95 leading, sized from the container width. Palette (light / dark): ink #111214 / #f1f0ec, page #f4f3ef / #0b0b0c, accent signal orange #ff4d1c / acid lime #d4ff3a. In forced-colours mode drop the stroke and show plain text. Show it on a #f4f3ef panel above a #0b0b0c panel. Selected variant — Hover fill (hover): Hover fill: a two-line headline ('Quiet tools / for loud ideas'), each word a span carrying its text in data-text; a filled copy in ::after is clipped to inset(0 100% 0 0) and wipes open to the right on hover over 0.5s (every third word fills in the accent). The first time it scrolls into view, the words fill and clear once in sequence, 110ms apart (1.6s each: wipe in, hold, wipe out to the right). This selection takes precedence over references to other themes or options in the general brief. Implement this selected appearance; do not add a variant picker or alternative appearances unless requested. Implementation requirements: Use React and TypeScript. Keep the component self-contained, with uniquely scoped CSS and no animation libraries. Include required imports, styles and font setup in the result. Interaction: Depends on the effect: point, scroll, move the pointer, or hover a row to pause it. The text is always real and readable. Motion: Clip-path wipes, a scroll-linked fill, an eased lean and a linear slide. Reduced motion removes the intro, the lean's easing and the slide; scroll fill still follows the scroll. Accessibility: Hover and scroll render one real heading; the echo and marquee copies are aria-hidden and the section is labelled with the words once. Filled copies are aria-hidden duplicates of visible text. Responsive behavior: Type scales with the container (cqi), lines wrap at word boundaries where allowed, and the marquee and echo never cause horizontal page scroll. Touch: Hover plays its fill once on view; echo sways on its own; marquee keeps sliding; scroll works with touch scrolling. Preserve keyboard access, visible focus and reduced-motion behavior. Keep fictional demo data and simulated service calls in a separate usage example; expose callbacks for real actions and recover from rejected requests. Keep usage-example links inside the demo: use local buttons or prevent navigation. Demonstration links must not navigate to Vitrine routes or open other pages; preserve real URL support in the reusable component itself. Verify the result at narrow and wide viewport sizes, with keyboard input and reduced motion enabled.

Notes

Interaction
Depends on the effect: point, scroll, move the pointer, or hover a row to pause it. The text is always real and readable.
Motion
Clip-path wipes, a scroll-linked fill, an eased lean and a linear slide. Reduced motion removes the intro, the lean's easing and the slide; scroll fill still follows the scroll.
Accessibility
Hover and scroll render one real heading; the echo and marquee copies are aria-hidden and the section is labelled with the words once. Filled copies are aria-hidden duplicates of visible text.
Responsive
Type scales with the container (cqi), lines wrap at word boundaries where allowed, and the marquee and echo never cause horizontal page scroll.
On touch
Hover plays its fill once on view; echo sways on its own; marquee keeps sliding; scroll works with touch scrolling.

Featured

402 components