also called read-along highlight · per-word reveal · text scrub
Each word owns a different slice of one timeline, so the sentence resolves left to right as you descend. The overlap is the entire craft: too little and it strobes word by word, too much and the sentence arrives all at once. Every word is plain text in the page, each in its own span. The stylesheet reads a word’s place among its siblings with sibling-index(), so no script counts, wraps or measures anything — and a plate keyed to a word arrives on exactly the same slice.
How it is built
.word { --k: sibling-index(); --n: sibling-count();
--at: calc(var(--a) + (var(--b) - var(--a)) * (var(--k) - 1) / var(--n));
animation: lit linear both; animation-timeline: --read;
animation-range: contain calc(var(--at) * 1%) contain calc((var(--at) + var(--w)) * 1%) }Text — Charles Darwin, On the Origin of Species, London: John Murray, 1859, p. 490, via Wikisource. Plates — Ernst Haeckel, Kunstformen der Natur, 1899–1904, public domain, via Wikimedia Commons: Tafel 83 Lichenes, Tafel 63 Basimycetes, Tafel 84 Diatomea, Tafel 44 Ammonitida, Tafel 86 Decapoda, Tafel 100 Antilopina, Tafel 91 Spumellaria, Tafel 49 Actiniae, Tafel 8 Discomedusae, Tafel 99 Trochilidae, Tafel 74 Orchidae, Tafel 17 Siphonophorae, Tafel 62 Nepenthaceae, Tafel 96 Chaetopoda, Tafel 68 Batrachia, Tafel 79 Lacertilia, Tafel 89 Chelonia, Tafel 72 Muscinae, Tafel 42 Ostraciontes.


















