v2.0.0 Pure Vanilla Rewrite · Zero Dependencies

The zero-dependency news ticker for the modern web

Four battle-tested engines — vertical, horizontal, marquee and typewriter — with full RTL mirroring, first-class TypeScript types, and a sub-2 kB footprint.

View live demos
0 runtime dependencies 4 ticker engines 97.4 kB packed RTL built in ESM + CJS + global build
Core Capabilities

Everything a news ticker needs

Built from the ground up for publishers and modern applications — lightweight, accessible, and effortlessly customized.

Zero dependencies

Vanilla JavaScript only. No jQuery, no runtime bloat — clean, modern, and tree-shakeable.

Four engines

Vertical, horizontal, continuous marquee and typewriter modes, switchable dynamically with update().

Full RTL support

Automatic direction detection and motion mirroring on Arabic and Hebrew layouts without manual config.

TypeScript types

Complete type definitions shipped with the package. Fully compatible with NodeNext and bundler resolution.

Accessible by default

Pauses on hover and focus, respects prefers-reduced-motion, and manages aria-live regions cleanly.

RAF animations

Silky 60fps transitions driven by requestAnimationFrame. autoplay: 0 loops continuously.

Events & controls

Native acmeTickerCycle and acmeTickerToggle custom events. Flexible selector/element binding.

Universal builds

Shipped in ESM, CommonJS and global UMD formats. Works with Vite, Next.js, Webpack, or simple script tags.

Engine Studio

Four engines, one line of HTML

Experience all four ticker modes running live with real controls and transition easing.

Bidirectional Layouts

Arabic and Hebrew, out of the box

Point AcmeTicker at a dir="rtl" container and motion, rest positions, and controls mirror automatically.

Logical directions, zero configuration

  • Automatic detection from dir="rtl", dir="auto" or CSS direction.
  • Logical left/right mapping follows bidirectional reading flow.
  • Override anytime with rtl: false to enforce physical motion.
  • Vertical and typewriter engines remain direction-neutral.
<html lang="ar" dir="rtl">
  <ul class="my-news-ticker">...</ul>
</html>

new AcmeTicker('.my-news-ticker', {
  type: 'horizontal'
});
Evolution

v1 vs v2 Architecture

The v2 rewrite preserves familiar v1 APIs while eliminating legacy dependencies and modernizing performance.

Capabilityv1 (jQuery Plugin)v2 (Modern Vanilla)
Runtime DependenciesjQuery required✓ Zero dependencies
Animation EnginejQuery animate()✓ 60fps RAF + v1 easing
TypeScript SupportNone✓ Full type declarations
RTL SupportNot supported✓ Built-in logical RTL
Continuous Loop (autoplay: 0)Corrupted loop✓ Seamless continuous flow
Distribution BundlesSingle script only✓ ESM + CJS + Global UMD
Controls Target BindingjQuery objects only✓ Selectors, Elements, NodeLists
Event DispatchingPositional callbacks✓ Standard event.detail
Quick Start

Up and running in minutes

Choose your preferred integration style: npm package, plain script tag, or modern framework.

npm install
npm install acmeticker
Plain Script Tag
<script src="https://cdn.jsdelivr.net/npm/acmeticker@2.0.0/dist/acmeticker.min.js"></script>
<script>
  new AcmeTicker('.my-news-ticker', {
    type: 'horizontal',
    direction: 'right'
  });
</script>
Vanilla / Bundlers (ESM)
import { AcmeTicker } from 'acmeticker';

const ticker = new AcmeTicker(document.querySelector('ul.ticker'), {
  type: 'vertical',
  direction: 'up',
  speed: 600,
  autoplay: 4000,
  pauseOnHover: true,
  controls: {
    prev: '.at-ticker-prev',
    next: '.at-ticker-next',
    toggle: '.at-ticker-pause'
  }
});
React Component
import { useEffect, useRef } from 'react';
import { AcmeTicker } from 'acmeticker';

function NewsTicker({ items }) {
  const listRef = useRef(null);

  useEffect(() => {
    const ticker = new AcmeTicker(listRef.current, {
      type: 'marquee'
    });
    return () => ticker.destroy();
  }, []);

  return (
    <ul ref={listRef}>
      {items.map(item => <li key={item}>{item}</li>)}
    </ul>
  );
}
Demos & Templates

Explore standalone examples

Production-ready demo pages showcasing every engine and configuration setup.

Reference

Options and Methods API

A compact, intuitive API surface designed for maximum control with zero configuration overhead.

OptionDefaultDescription
type'horizontal'vertical, horizontal, marquee or typewriter
autoplay2000Pause between transitions (0 = continuous loop)
speed50Transition duration, char delay or marquee px/ms
direction'up'up / down / left / right — logical under RTL
rtl'auto'auto-detect, or force true / false
pauseOnFocustruePause while the ticker region is focused
pauseOnHovertruePause while the pointer is over the ticker
controls{}prev / next / toggle — selectors, elements or NodeLists
play() resume pause() freeze toggle() flip next() / prev() navigate update() re-configure destroy() teardown