Drop-in infinite marquee. Include marquee.css + marquee.js, add a class, done.
Download marquee.zip<link rel="stylesheet" href="marquee.css">
<script src="marquee.js" defer></script>
<div class="marquee"
data-direction="horizontal" <!-- horizontal | vertical -->
data-reverse="false" <!-- true | false -->
data-speed="40" <!-- px per second -->
data-gap="16" <!-- px between items -->
data-pause-on-hover="true">
<div class="card">Item 1</div>
<div class="card">Item 2</div>
<div class="card">Item 3</div>
</div>
<!-- Multiple marquees on one page just work — each is initialized
independently, so you can mix directions, speeds, and reverse
settings freely, including many side-by-side vertical columns. -->