Unlock faster development with Fidely UI Pro components Coming soon

Marquee

A continuous scrolling component for displaying content in a seamless loop.

Accessible by default
Composable components
Built on Ark UI
Powered by Panda CSS
Design-system ready
TypeScript-first
Production tested

Usage

import { Marquee } from '@fidely-ui/react'
<Marquee.Root>
  <Marquee.Viewport>
    <Marquee.Content>
      <Marquee.Item />
    </Marquee.Content>
  </Marquee.Viewport>
</Marquee.Root>

Features

  • Smooth, GPU-accelerated scrolling with seamless looping
  • Supports horizontal and vertical directions
  • Optional reverse scrolling and RTL layouts
  • Auto-fill mode to duplicate items for continuous flow
  • Configurable speed, gap, and spacing
  • Pause on interaction (hover or focus)

Autofill

Use the autoFill prop to automatically duplicate content to fill the viewport. The spacing prop controls the gap between duplicated content instances:

Mango
Pineapple
Strawberry

Reverse

Pass the reverse prop to the Root component to reverse the scroll direction of the marquee content.

Reverse direction
Right-to-left motion
Top-to-bottom motion
Continuous scrolling
Smooth animation

Vertical Orientation

Set side="bottom" (or side="top") to create a vertical marquee:

A

Alice

Designer

Designer at Alice
B

Bob

Developer

Developer at Bob
C

Clara

Product Lead

Product Lead at Clara
D

David

Engineer

Engineer at David
E

Ella

Manager

Manager at Ella
A

Alice

Designer

Designer at Alice
B

Bob

Developer

Developer at Bob
C

Clara

Product Lead

Product Lead at Clara
D

David

Engineer

Engineer at David
E

Ella

Manager

Manager at Ella

Edge Gradients

Add Marquee.Edge components to create fade effects at the start and end of the scrolling area:

Reverse direction
Right-to-left motion
Top-to-bottom motion
Continuous scrolling
Smooth animation
Reverse direction
Right-to-left motion
Top-to-bottom motion
Continuous scrolling
Smooth animation

Pause on Interaction

Enable pauseOnInteraction to pause the marquee when users hover or focus on it, improving accessibility:

Accessible by default
Composable components
Built on Ark UI
Powered by Panda CSS
Design-system ready
TypeScript-first
Production tested

Custom Speed

Control the scrolling speed of the marquee by passing the speed prop. The value is measured in pixels per second, allowing precise control over how fast the content moves.

Apple
Banana
Cherry
Date
Elderberry
Fig
Grape

Props

Root

PropTypeDefaultDescription
autoFillbooleanfalseWhether to automatically duplicate content to fill the container.
defaultPausedbooleanfalseWhether the marquee is paused by default.
delaynumber0The delay before the animation starts (in seconds).
idsPartial<{}>-The ids of the elements in the marquee. Useful for composition
loopCountnumber0The number of times to loop the animation (0 = infinite)..
onComplete() => void-Function called when the marquee completes all loops and stops. Only fires for finite loops (loopCount > 0)..
onLoopComplete() => void-Function called when the marquee completes one loop iteration..
onPauseChange(details: PauseStatusDetails) => void-Function called when the pause status changes.
pausedboolean-Whether the marquee is paused
pauseOnInteractionbooleanfalseWhether to pause the marquee on user interaction (hover, focus).
asReact.ElementType-The underlying element to render.
asChildboolean-Use the provided child element as the default rendered element, combining their props and behavior.
reversebooleanfalseWhether to reverse the animation direction.
sideSidestartThe side/direction the marquee scrolls towards.
spacingstring1remThe spacing between marquee items.
speednumber50The speed of the marquee animation in pixels per second.
translationsIntlTranslations-The localized messages to use.

Edge

PropTypeDefaultDescription
sideSide—The side where the edge gradient should appear.

RootProvider

PropTypeDefaultDescription
valueUseMarqueeReturn—-
asChildboolean-Use the provided child element as the default rendered element, combining their props and behavior.