Magoo Component UI logo Magoo Component UI
← Catalog

Marquee

marquee organism experimental

A continuously auto-scrolling horizontal loop of logos or text pills that pauses on hover and respects reduced motion.

The width preview needs a screen wider than the chosen width — use a larger device (or a desktop browser) to see the desktop and tablet layouts.

Default
Nike Adidas Decathlon Forbes Discover
TextPills
Realtime sync Edge caching Type safe Zero config Auto scaling Observability Webhooks Audit logs

Props

NameTypeReq
items array ✓
speed enum (slow | normal | fast)
direction enum (left | right)
gap enum (default | sm | lg)
label string

Related components

How to use

behavior.js drives the scroll with requestAnimationFrame — there is no CSS keyframe. It reads data-speed and data-direction from the root, translates the .marquee__track each frame, and wraps the offset by the width of the first .marquee__group so the two duplicated groups tile seamlessly. It pauses on hover and focus-within and does not animate at all when prefers-reduced-motion is set. The portable self-init reads all config from data-* attributes — no props object is passed. Because screenshots do not run behavior.js, the strip renders static (at its start position) in captured images.

Use cases

media WCAG AA SEO 20 dir: both ai-generated