Skip to content

Marquee

A seamless infinite ticker that pauses on hover and stands still for reduced motion.

Live — this one is real

Cycle — 12s

SurfacesMotionTypographySystemsThemesPatterns

Usage

import { Marquee } from "mizu-ui";

export function Ticker() {
  return (
    <Marquee duration={30} label="Disciplines">
      <span>Surfaces</span>
      <span>Motion</span>
    </Marquee>
  );
}

Source & setup

Import mizu-ui/styles.css once. Fonts are optional via mizu-ui/fonts.css. Override --mizu-* tokens or use className for local styling. Uses native React and CSS; install the package peers for root imports.

Inspect motion/Marquee.tsx

Source is included in the npm package under src/motion/Marquee.tsx.

Open full source ↗

Props

PropTypeDefaultDescription
durationnumber42Seconds per full cycle.
pauseOnHoverbooleantruePause the cycle while hovered.
separatorbooleantrueDiamond separator between items.
labelstring—Accessible name for the marquee region.

Accessibility

The second copy is aria-hidden and inert. Hover/focus pauses, and a visible Pause/Play button gives explicit control.

Motion

Linear transform loop — GPU-friendly, no layout thrash.

Works alongside