Marquee
TickerInfinite scrolling strip for logos, quotes or tags in any direction.
Two tilted bands that cross the page, each a marquee of the same few words running the other way: one in the ink tone, one in a colour block, the words alternating between the body face and the emphasis face with a spark between them. A divider with a voice of its own. The bands are decoration, hidden from assistive technology with no tab stop; label gives the words to a screen reader once. They pause under a pointer and stand still under reduced motion (Marquee). Zero JavaScript of its own.
Sample services: Social media, Photoshoots, Short video, Design sets, Ads, Live selling
Live, from the library itself, at full size: scroll, hover, navigate away and back. The demo is never gated.
JavaScript of its own
0 B
CSS 9.9 kB raw including the base tokens. Measured from a production build, and again in CI for every change that can move it.
Browser support
every browser.
The demo above is never gated; the source is. With a key in components.json (see account), the registry serves it like any other item:
npx shadcn@latest add @moonarc-pro/ticker-bands---
import TickerBands from '@/components/moonarc/pro/TickerBands.astro';
---
<TickerBands items={['Social media', 'Photoshoots', 'Short video', 'Design', 'Ads', 'Live selling']} />Without a key the registry answers 401 with an upgrade message. Everything this section composes is free: marquee.
| Prop | Type | Default | Description |
|---|---|---|---|
items | string[] | none | The words, in order; every second one is set in the emphasis face (--ma-font-em, italic). |
bands | { paint?: 1 | 2 | 3 | 4 | 5 | 'ink'; tilt?: number; reverse?: boolean }[] | [{ paint: 'ink', tilt: 3, reverse: true }, { paint: 1, tilt: -2.5 }] | Up to two bands, the first drawn under the second: what each paints (a block or the ink tone), its tilt in degrees (doubled on a phone) and its direction. |
duration | number | 45 | Seconds for one pass. |
label | string | none | When set, the words are also given once to a screen reader, under this name. |
The section reads the theme contract (shadcn's variable names with the base tokens as fallback), so a pasted theme or one --ma-brand recolours it. Its class names are the override surface and stay stable; a named slot replaces the matching prop with your own markup.
.ma-tickerbands.ma-tickerbands__band.ma-tickerbands__item.ma-tickerbands__spark
none
The bands stand still, tilted, with their words in place.
ClientRouterInherits Marquee; nothing of its own to rebind.
Replaces: Crossing marquee ribbons (Framer agency templates). See the migration table.
Infinite scrolling strip for logos, quotes or tags in any direction.
A "trusted by" section: a heading, a strip of greyscale logos drifting past that colour up on hover, and optionally the same logos as a hairline grid revealed with a stagger.
Shows two rows of testimonial cards drifting in opposite directions, pausing while hovered so any quote can be read.
Also: view transitions · how costs are measured · browser support · accessibility policy · five-minute setup · MCP for agents · this page as Markdown