Marquee

Infinite scrolling marquee with drag to pause, direction control, and fade masks.

Marquee

React
Motion
React
Motion

Click or drag the marquee to interact with it

Marquee scrolls any row of content horizontally forever, duplicating children so the loop is seamless in both directions. It supports drag interaction that pauses and reverses the scroll, per-direction speeds, pause on hover, and edge fade masks. Built with Framer Motion and Tailwind CSS. The standard building block for logo strips, testimonial rows, and feature tickers on landing pages.

Installation

Examples

Horizontal Marquee

avenger logobatman logoblack panther logocaptain america logodaredevil logodeadpool logo
avenger logobatman logoblack panther logocaptain america logodaredevil logodeadpool logo
flash logogreen lantern logoironman logosuperman logodr strange logoshield logo
flash logogreen lantern logoironman logosuperman logodr strange logoshield logo

Usage

import { Marquee } from "@/components/ui/marquee";
export default function MyComponent() {
  return (
    <Marquee>
      {/* Your marquee content goes here */}
      <div className="px-4">Content Item 1</div>
      <div className="px-4">Content Item 2</div>
      <div className="px-4">Content Item 3</div>
    </Marquee>
  );
}

Props

PropTypeDefaultDescription
childrenReact.ReactNodeundefinedContent to be displayed in the marquee
gapnumber16Space between repeated content in pixels
speednumber100Animation speed (higher is faster)
speedOnHovernumberundefinedAnimation speed when hovered (higher is faster)
direction"horizontal" | "vertical""horizontal"Scrolling direction
reversebooleanfalseReverse the animation direction
classNamestringundefinedAdditional CSS classes to apply
fadeEdgesbooleanfalseFade the edges of the marquee content
fadeWidthnumber64Width of the edge fade in pixels
pauseOnTapbooleantruePause animation when clicked
draggablebooleantrueAllow dragging interaction with the marquee