Dot Matrix Display
LED dot matrix with scrolling marquee text animation
Size
Material
NOW PLAYING: TRACK 07 -- MIDNIGHT CITY
<div class="dot-matrix" style="width:200px">
<div class="dot-matrix-text">NOW PLAYING: TRACK 07 -- MIDNIGHT CITY</div>
</div> .dot-matrix {
padding: 8px 16px; background: var(--bg-inset);
border: 1px solid #1e1e1e; border-radius: var(--radius-md);
box-shadow: inset 0 1px 4px rgba(0,0,0,0.7); overflow: hidden;
}
.dot-matrix-text {
font-family: var(--font-lcd); font-size: 20px; letter-spacing: 3px;
color: var(--green-hi); text-shadow: 0 0 8px var(--green-glow);
white-space: nowrap;
animation: marquee 8s linear infinite;
}
@keyframes marquee {
0% { transform: translateX(100%); }
100% { transform: translateX(-100%); }
} API
| Class | Type | Description |
|---|---|---|
.dot-matrix | Base | Primary component class |
.md | Size | Medium (default) variant |
Design Notes
Physical Analog
Reference devices: LED ticker tape displays (stock exchanges, sports arenas), synthesizer patch name scrollers (Korg M1, Roland JV-1080), bus destination signs. Mechanism: Grid of individual LEDs (5x7 or 8x8 per character cell). Displays arbitrary text by selectively lighting pixels. Text wider than display scrolls horizontally (marquee) via shift register at fixed rate (20-50ms per column shift).
Geometry
| Property | Value |
|---|---|
| Text font | 20px VT323 |
| Letter-spacing | 3px |
| Scroll animation | 8s linear infinite |
| Padding | 8px 16px |
CSS Recipe
Container
.dot-matrix {
padding: 8px 16px; background: var(--bg-inset);
border: 1px solid #1e1e1e; border-radius: var(--radius-md);
box-shadow: inset 0 1px 4px rgba(0,0,0,0.7); overflow: hidden;
}
Scrolling Text
.dot-matrix-text {
font-family: var(--font-lcd); font-size: 20px; letter-spacing: 3px;
color: var(--green-hi); text-shadow: 0 0 8px var(--green-glow);
white-space: nowrap;
animation: marquee 8s linear infinite;
}
Marquee Animation
@keyframes marquee {
0% { transform: translateX(100%); }
100% { transform: translateX(-100%); }
}
HTML Structure
<div class="dot-matrix" style="width:200px">
<div class="dot-matrix-text">NOW PLAYING: TRACK 07 -- MIDNIGHT CITY</div>
</div>
Size Variants
No explicit size variants. Width set by container.
Material Variants
Single material: Phosphor screen with LED grid. Default color is green (most common dot-matrix color).
Theme Behavior
- Container adapts via
--bg-inset - Green LED color and glow are fixed
- Inset shadow at 0.7 opacity
Constraints
- Animation MUST use
lineartiming function -- dot matrix scrolling is uniform speed (clock-driven), NOT eased. white-space: nowrapis REQUIRED to prevent text wrapping.overflow: hiddenon container clips the scrolling text.- Font MUST be
--font-lcd(VT323) for pixel-grid appearance. text-shadowwith green glow simulates LED light bleeding.- Width MUST be set on container to define the visible "window".
Accessibility
- Use
aria-labelon container with the full text content role="marquee"orrole="status"for the scrolling region- Consider
prefers-reduced-motionto pause animation - Text content should be accessible even when partially scrolled off-screen
♿
Accessibility
- Element
- Use semantic HTML with appropriate ARIA roles
- Keyboard
- Follow WAI-ARIA patterns for this control type
- Focus
-
Visible focus indicator required. Use native browser focus ring or custom
:focus-visiblestyles.