Marquee
<al-marquee>betaAn endless belt of outline display type. Decorative reinforcement of the page's message — it pauses on hover and stands still under reduced motion.
CODE — HTML
Guidance
An endless belt of outline display type that reinforces a message without asking to be read. It is decoration with words in it: the type is the texture, not the content.
WHEN TO USE
- A page needs a band of movement between two dense sections, and the brand's display face is the right texture for it.
- The words are a refrain the reader has already been told, so nothing is lost if they are never read.
WHEN NOT TO USE
- The text is information the reader actually needs. The band is hidden from assistive technology and scrolls out of view, so required content placed here is content nobody is guaranteed to see.USE TEXT-BLOCK →
- You want a row of logos, moving or static. That is a different component with its own sizing and contrast treatment.USE LOGO-WALL →
DO
- Repeat the item list so the belt loops seamlessly. The component translates by half its track, which only reads as continuous when the second copy matches the first.
- Use
pausedfrom the outside when a page needs the motion stopped; it is a reflected attribute, so no page CSS has to reach into the shadow root.
DON’T
- Do not put a link or a button in it. The whole band is
aria-hidden, so anything focusable inside becomes a control a keyboard user can reach but a screen reader never announces. - Do not lengthen the item list to say more. A longer belt does not make the words more readable, it just slows the loop.
ACCESSIBILITY IN PRACTICE
- The band is
aria-hiddenby design and the animation stops underprefers-reduced-motion: reduce, so it is already safe for motion sensitivity. What it is not safe for is carrying meaning.
CONTENT GUIDELINES
- Items are fragments: a word, a symbol, a short refrain. A sentence in a marquee is a sentence the reader will only ever see half of.
WHERE THIS CAME FROM
libs/sl-web-components/components/marquee/marquee.tsThe component this guidance describes.libs/sl-web-components/components/marquee/marquee.tsThe band is hidden from assistive technology, which is the basis for every warning about putting meaning in it.libs/sl-web-components/components/marquee/marquee.scssThe animation stops under a reduced-motion preference, so no consumer opt-out is required.
Each line above names a file and a literal string that must still appear in it.pnpm gate:guidance re-reads them from this built page, so guidance that has stopped being true fails a check rather than misleading you.
FIGMA PARITY
The Figma set changed since the last confirmed sync — the code is behind.
- DECIDED BY
- CONTRACT DIFF
- FIGMA SIDE
- OBSERVED
- LAST CONFIRMED SYNC
- 2026-08-28
- PUBLIC SURFACE
- 1 ATTR · 1 SLOT · 0 EVENT · 1 PART
The component’s public surface — attributes and their value sets, slots, events, CSS parts and custom properties, from the manifest — compared against the Figma set’s property definitions.
ACCESSIBILITY
Measured by axe on this documentation site’s own preview of the default story — @southleft/sl-web-components has no Storybook in the measured set.
The CI gate disables color-contrast globally (libs/al-web-components/story-fixture/src/main.ts), so its result never reaches a test run. It is enabled for this measurement, and reported here whichever way it comes out.
NO CONTRAST VIOLATIONS ACROSS THIS COMPONENT’S 1 STORIES.
INSTALL
import '@southleft/sl-web-components/components/marquee';
API — 1 PROPS
SLOTS
EVENTS
THIS COMPONENT DECLARES NO EVENTS IN THE MANIFEST.
CSS PARTS
CSS CUSTOM PROPERTIES
SOURCE — components/marquee/marquee.ts · Organisms/Marquee