Skip to content

Marquee

An endless horizontal loop of any content, repeated as many times as the width needs so the seam never shows, with both edges faded by a mask.

Download
Customize

Page scroll velocity pushes it faster or back against itself and leans it by up to 6° on a spring, and the separators warm with the push. Hovering, or focus inside, slows it to a stop on a soft spring rather than freezing it.

Install

npx shadcn@latest add https://obsydeui.com/r/marquee.json

Usage

Import it from where the CLI puts it, or copy the files below by hand.

import { Marquee } from '@/components/obsyde/ember/marquee/Marquee';

export function Example() {
  return (
    <Marquee />
  );
}

Files

Plain React, TypeScript and CSS. No dependencies. The download keeps these paths.

  • ember/marquee/Marquee.tsxcomponent
  • ember/marquee/marquee-demo.cssstyles
  • ember/marquee/marquee.cssstyles
  • ember/marquee/MarqueeDemo.tsxdemo
  • ember/type-kit/kit.tsshared
  • ember/shared/accent.tsshared
  • ember/shared/spring.tsshared
  • ember/shared/ember.cssshared

API

PropTypeDefault
accentAccent'ember' | 'volt' | 'arc''ember'
wordsWords (| separates)string'Actions|Forms|Data|Navigati…'
speedSpeed (px/s)number60
directionDirection'left' | 'right''left'
scrollFactorScroll pushnumber1
pauseOnHoverSlow on hoverbooleantrue
sizeSize (px)number64
fadeEdge fade (px)number72