StealThis .dev
Pages Medium

Storybook — Read-Along

A cozy karaoke-style read-along for the fictional bedtime tale The Moon's Lost Mitten, where each word of a CSS-illustrated picture book lights up in sequence as a friendly narrator speaks. A big Read-to-me button, restart, voice mute, and a 0.5x to 1.8x speed slider drive the pacing, while the highlight auto-scrolls and the scene caption updates per page. Tapping any word jumps the narration there, and an easy-read toggle swaps a dyslexia-friendly font with looser spacing. Web Speech API when available, timer fallback otherwise.

Open in Lab
html css vanilla-js
Targets: JS HTML

Code

Read-Along

A warm, picture-book read-along for the fictional bedtime story The Moon’s Lost Mitten. An inline-SVG illustration panel sits above the text — a little fox on a moonlit snowy hill, with a softly bobbing moon, twinkling stars, and a pulsing pink mitten, all drawn in CSS with no external images. Below it, the story is rendered word by word in a high-legibility friendly font, with a live word counter and a status pill that breathes while the narrator reads.

Press Read to me and the words highlight in karaoke sequence, gently scrolling to keep the active word centered, while the scene caption updates as each page of the story begins. When supported, the browser’s Web Speech API voices each word; otherwise a tuned timer keeps everything in sync so the demo works with no audio at all. Restart returns to the very start, the speaker button mutes the voice (words still light up), and a speed slider stretches the pace from a slow 0.5x crawl to a brisk 1.8x.

Every word is a real control: tap or press Enter on any word to jump the narration there. Keyboard shortcuts cover the rest — Space plays and pauses, the arrow keys step word by word, and R restarts. An easy-read toggle switches to a dyslexia-friendly font with looser letter and word spacing, focus-visible rings keep it keyboard-friendly, reduced motion is respected, and a toast() helper surfaces friendly hints. The layout collapses gracefully down to ~360px.

Illustrative kids’ UI only — fictional stories, characters, and audio.