April 8, 2026/Simple/Marquees & Tickers

Infinite Ticker

An infinitely scrolling horizontal text ticker that loops seamlessly. Items are duplicated and a CSS animation shifts the track by exactly 50%, creating a gapless loop without JavaScript.

Brand IdentityWeb DesignMotionShopifyArt DirectionNo-5 StudioBrand IdentityWeb DesignMotionShopifyArt DirectionNo-5 Studio
import styles from "./styles.module.css";

export default function InfiniteTicker({ items = [], speed = 30 }) {
  // Duplicate items to ensure seamless loop
  const doubled = [...items, ...items];

  return (
    <div className={styles.wrapper}>
      <div
        className={styles.track}
        style={{ "--ticker-duration": `${speed}s` }}
      >
        {doubled.map((item, i) => (
          <span key={i} className={styles.item}>
            <span className={styles.text}>{item}</span>
            <span className={styles.dot} aria-hidden="true">·</span>
          </span>
        ))}
      </div>
    </div>
  );
}

Related Components

2MO AGO
Press Marqueemarquees
3MO AGO
Logo Wall Cyclemarquees