Revenue by month
Every figure opens its own ledger lines.
Let scroll only trigger a reveal, then play it on a fixed duration.
From design-motion-principles, cookbook §14. See @jh3yy on X ↗.
Scroll slowly, stop halfway, then scroll back up.
Every figure opens its own ledger lines.
animation-timeline: view()0%Every figure opens its own ledger lines.
style(--revealed: 1)–Set a speed, press Play, and compare the timings.
Seven sections, one owner each.
animation-range: entry 0% cover 50%Seven sections, one owner each.
animation: reveal 250ms| Scroll speed | Scrubbed card | Triggered card |
|---|---|---|
| Runs appear here. | ||
@keyframes trigger { 0% { --revealed: 0; } 1%, 100% { --revealed: 1; } }
.feature {
animation: trigger linear both;
animation-timeline: view();
animation-range: entry 50% entry 100%;
}
@container style(--revealed: 1) {
.feature > .card { animation: reveal 250ms var(--ease-out) both; }
}
Simulate no support, then scroll both panes.
Every deadline, graded by urgency.
view()–Every deadline, graded by urgency.
IntersectionObserver–A reveal is an event, not a slider: scroll picks when, the designer how long.