The modern, accessible replacement for <marquee>.
Maruq is currently in Beta. Please expect bugs, and please report those bugs (or suggestions) you have.
Maruq brings marquee-style scrolling back to the web using modern CSS and JavaScript — without deprecated HTML, while remaining lightweight, flexible, and CDN-friendly.
.maruq divs<maruq-element>Maruq can be used directly from a CDN with no build step.
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/[email protected]/dist/maruq.min.css"
/>
<script
src="https://cdn.jsdelivr.net/npm/[email protected]/dist/maruq.min.js"
defer
></script>
<link
rel="stylesheet"
href="https://unpkg.com/[email protected]/dist/maruq.min.css"
/>
<script
src="https://unpkg.com/[email protected]/dist/maruq.min.js"
defer
></script>
Custom Element (Recommended)
<maruq-element behavior="scroll" speed="30">
<span>Hello world</span>
</maruq-element>
<div class="maruq" behavior="alternate" speed="20">
<span>Scrolling content</span>
</div>
Legacy / Plain HTML may not be supported in the future, but only time can tell. For right now, please use Custom Element if possible, if not, then you can use the
<div>method.
| Attribute | Description |
|---|---|
behavior |
scroll (default), slide, or alternate |
speed |
Duration in seconds |
bgcolor |
Any valid CSS color |
pause-on-hover |
Pauses animation on hover |
stop / stopped |
Prevents the marquee from running |
loop |
Number of loops (0 or -1 = infinite) |
Each marquee element exposes simple methods:
const el = document.querySelector("maruq-element");
el.start(); // start scrolling
el.stop(); // stop scrolling
start - fired when scrolling startsbounce - fired when reaching an edge (alternate only)finish - fired when a finite loop completesMaruq respects user motion preferences:
prefers-reduced-motion: reduce is enabledMIT