w10k · the motion atelier
Seventeen ways a page can move.
A specimen book of interactions. Each plate is one mechanism, hand-coded and annotated — hover it, drag it, scroll it, click through it. No effect is decoration; each one carries a job: revealing, crossing, turning, becoming. Six will hold up on an awards gallery; the other eleven are the working vocabulary a flagship site is built from.
Lamplight reveal
Spec. 01 — object reveal on hovermove the lamp
Mechanism. The engraving is always in the DOM; a radial-gradient
mask-image centred on two custom properties hides all of it except a lamp-sized circle.
Pointer moves write --mx/--my through one rAF-throttled handler. Touch and reduced-motion
get the full engraving, unmasked.
The portal
Spec. 02 — portal transitionThe fitting room
the disc is a door — step through
The archive
same page, other world
Mechanism. The second room sits on top with
clip-path: circle(0). A click stamps the click point into --px/--py and
transitions the clip to circle(160%) — the world grows out of the exact pixel you touched.
No canvas, no library; one animatable property.
The turned vessel
Spec. 03 — 3d product3D paused — three.js unavailable
Mechanism. A product page's hero, minus the product photo: a brass vessel described as a 12-point lathe profile, lit by a room environment, ACES-tonemapped, on a slow turntable. The pointer only suggests tilt — spring-damped, never snapping. The scene loads lazily when the plate approaches and stops rendering off-screen.
Dust that spells
Spec. 04 — particle transformationMechanism. The wordmark is rendered once to an offscreen canvas and
sampled into ~1,100 points; a second target set traces a ring. Every particle forever chases
its own slot in the current target (p += (t − p) × 0.08) — the morph is not an
animation, it's a thousand small pursuits. Click the plate to transform.
Through the dark
Spec. 05 — space transitionMechanism. A starfield warp in the house palette: specks live in a
unit cube, their z falls each frame, and screen position is the classic perspective divide
x/z. Each speck draws a short line from last frame's position — speed becomes streaks.
Hover leans in: the velocity target rises and the camera eases toward it.
The carousel of palettes
Spec. 06 — 3d galleryMechanism. Ten plates on a CSS cylinder — each panel is
rotateY(i·36°) translateZ(r) inside one preserve-3d ring, so the browser
composites the whole gallery as transforms, no WebGL. Drag feeds velocity; release keeps inertia and
friction does the settling. The plates are the catalog's real palettes.
Scrubbed by scroll
Spec. 07 — scroll-pinned scrub0%
keep scrolling — the section is pinned
Mechanism. The section is 240vh tall; the stage inside is
position: sticky, so it holds still while you scroll past it. A passive, rAF-throttled scroll
handler turns "how far through the section" into a 0→1 progress and drives a clip-path wipe —
the reader controls the timeline with the scroll wheel. This is the backbone of premium scrollytelling.
Decoding type
Spec. 08 — text scrambletailored to the last stitch
click to replay
Mechanism. Each letter cycles random glyphs, then locks to its final
character on a staggered schedule (left to right, ~1 char per two frames). No font swap, no library — just
textContent rewritten each frame from a fixed-width monospace so the line never reflows. Runs
once on reveal; click to replay. Reduced-motion shows the resolved line instantly.
The stacking deck
Spec. 09 — sticky stackOne accent, rationed
Hairlines, not boxes
Type does the shouting
Mechanism. Each card is position: sticky at a top offset
90px + i·16px, so they pile into a fanned deck as you scroll. A CSS scroll-driven animation
(animation-timeline: view()) scales and dims each card as the next slides over it — pure CSS,
no scroll listener. Where view() is unsupported the sticky pile still reads correctly.
The swatch trail
Spec. 10 — cursor image trailsweep across
Mechanism. A fixed pool of swatch tiles is reused round-robin. Every time
the pointer travels past a distance threshold, the next tile is placed at the cursor and animates from
scale(1) to scale(0) with a fade — so a ribbon of palettes follows the hand and
dissolves behind it. Pool reuse means zero allocation per move; pointer: fine only.
The departure board
Spec. 11 — split-flapnow boarding
Mechanism. A row of cells, each cycling A→Z toward its target letter so the
word appears to tick into place like an old airport board. Each cell advances at its own interval and
stops on its target; a short rotateX flip on every change sells the mechanical hinge. The board
cycles through a set of words — editorial, tactile, and entirely CSS + text.
The reactive ribbon
Spec. 12 — velocity-skew marqueeMechanism. An infinite marquee whose speed and skewX are coupled
to scroll velocity: scroll fast and the ribbon lunges and leans; stop and it eases back to a calm
drift. Scroll delta feeds a value that decays each frame, so the type has weight — it reacts to the reader and
settles. The track is duplicated once and wrapped by width for a seamless loop.
Spring & return
Spec. 13 — elastic dragthrow it
Mechanism. Drag the disc and release: a spring integrator pulls it home
(a = −k·x − c·v), so it overshoots and settles rather than snapping. The same two constants —
stiffness and damping — are the whole feel; tune them and the disc goes from honey to rubber. This is the
physics behind every "premium" drag, sheet, and pull-to-refresh.
The rolling ledger
Spec. 14 — odometer counterMechanism. Each digit is a vertical strip of 0–9; to show a number the strip
translates up by digit × 1em inside a one-line clip, so figures roll into place like a
mechanical odometer. On reveal the strips ease from 0 to the target with a per-digit stagger. Stats that roll up
read as earned, not printed — the standard flourish for a numbers section.
Depth on a flat card
Spec. 15 — 3d tilt parallaxmove over the card
Mechanism. The pointer's position over the card becomes a
rotateX/rotateY pair, spring-damped so the card leans rather than jitters. Each inner layer sits at
a different translateZ inside a preserve-3d parent, so they part like pages — real
parallax from one transform. Touch and reduced-motion get the flat card, no tilt.
Aurora ground
Spec. 16 — ambient gradient mesha background that breathes
Mechanism. Four soft radial gradients in the house palette drift on slow, out-of-phase sine paths and paint into a canvas each frame — an aurora that never obviously loops because the frequencies never align. It's the calm, expensive alternative to a video hero: a few kilobytes of math instead of a few megabytes of file. Runs only while on screen; frozen to one still frame under reduced-motion.
Living ink
Spec. 17 — the signatureThe cursor is a pen
that never quite dries.
Mechanism. The trail is a queue of shrinking circles redrawn each
frame; the goo is one CSS line — filter: blur(7px) contrast(24) on the canvas fuses the
blobs into liquid (the metaball trick, no shader). The statement sits above in real DOM text with
mix-blend-mode: multiply, so the ink flows behind the words it answers to.