Neo-Brutalism
Newspaper Ticker
Two rows of bold uppercase headlines scroll in opposite directions with red accent highlights — pure CSS marquee in neo-brutalist black-and-cream style.
csslight complexitymoderate motionmobile-ready
Open on the canvas to copy the code → Free account · 3 copies a day · membership goes unlimited
1
When to use it
News tickers, event dashboards, or portfolio hero banners needing scrolling text with editorial urgency.
When not to
Contexts requiring readable static text — continuous scroll makes sustained reading impossible.
Working with an AI agent
Every component ships agent-ready metadata. An example instruction for this one:
Change row 1 speed to 12s (edit `.bru-t1` animation duration), swap accent color from #ff2d00 to #0055ff, and add a third ticker row. Theme: dark tokens live in :root, the light variant in :root[data-theme="light"]; ?theme=light or a {type:'forever:theme'} postMessage switches at runtime.
Safe to edit
- row 1 scroll speed (18s in .bru-t1)
- row 2 scroll speed (24s in .bru-t2)
- accent color (#ff2d00 on em)
- headline text (span elements)
- background color (#fffbe6)
- theme tokens (:root dark defaults + [data-theme=light] overrides)
Keep intact
- duplicate span blocks (required for seamless 50% translate loop)
- bru-reduced prefers-reduced-motion guard
- visibilitychange pause/play handler
- IIFE wrapper
- theme hook (?theme= bootstrap + forever:theme message listener + theme tokens)
Known limitations
- Each track requires content duplicated exactly twice for the seamless loop — adding spans must be mirrored
- Reduced-motion users see static non-scrolling headlines with no animated fallback
More Neo-Brutalism components
- Error ManifestoA neo-brutalist error card with hard shadow and border cycles its text color between white, red, and yellow in stepped CSS keyframe flashes.
- Receipt CardA neo-brutalist receipt card with lime-green monospace text on black; line items fade in one-by-one with a staggered delay, revealing a running total.
- Warning TapeTwo scrolling yellow-black hazard stripe bands frame a bold "UNDER CONSTRUCTION" label that gently pulses. Pure CSS, zero JS logic.
- Data GridA neo-brutalist 5-row data grid showing node load % and status; cells flash cyan, lime, or red every 800ms to reflect ERR/WARN/OK states.