No.418 · Text Animations· New
Marquee Outline Text
Two rows of big words sliding past each other in opposite directions, alternating hairline and solid, with a small accent star between the words. Hovering a row pauses it.
The prompt
Written for the variant you picked above: Light
Build big poster lettering drawn as hairlines (transparent text with a 1.5px -webkit-text-stroke in the ink colour). Inter 800, uppercase, -0.035em, 0.95 leading, sized from the container width. Two rows of words (Design, Build, Ship, Listen / Measure, Repeat, Prototype, Iterate), up to 128px, alternating hairline and solid words with a small accent ✦ between them. Each row is its content twice in a track sliding by -50% (38s left, 44s right for the second row) so it loops seamlessly. Hovering a row pauses it. 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. Selected variant — Light (light): Palette for this theme (Light): --motx-accent #ff4d1c; --motx-ink #111214; --motx-page #f4f3ef. Treat these as the root colour tokens, one value per role, and name them to suit your code. Select it with the theme option set to "light". Keep every dimension, spacing value, state and motion from the brief unchanged, and keep text at 4.5:1 contrast or better on these surfaces. 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: Hover a row to pause it. Motion: A linear 38s and 44s slide in opposite directions. Reduced motion stops it. Accessibility: The section is labelled with the words once; the moving copies are aria-hidden. Responsive behavior: Type scales with the container; the rows never cause horizontal page scroll. Touch: The rows keep sliding; nothing depends on hover. 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
- Hover a row to pause it.
- Motion
- A linear 38s and 44s slide in opposite directions. Reduced motion stops it.
- Accessibility
- The section is labelled with the words once; the moving copies are aria-hidden.
- Responsive
- Type scales with the container; the rows never cause horizontal page scroll.
- On touch
- The rows keep sliding; nothing depends on hover.