Santorini Gyros.
A Norwegian gyros brand under Crazy Food Trucks Norge, built as a single-page scrollytelling site: the truck itself unfolds in cross-fading stages as the page scrolls, tied to a real NOK menu.
- Role
- Design + Build
- Timeline
- Roughly 2026-09-09 to 09-11, three days, derived from file mtimes and a single squashed commit
01 / THE REQUEST
Sell the truck,not just the menu.
Crazy Food Trucks Norge needed a site for its Santorini Gyros brand that sold the physical truck experience, not just a static menu. Real NOK pricing (169-219 kr per dish) and a route across Norwegian pickup points had to sit inside something more atmospheric than a flat list.
02 / THE PROBLEM
Scroll and seekhave to agree.
A scroll-driven reveal sequence that only responds to organic scrolling breaks the moment a user taps a stage label or a keyboard shortcut to jump ahead: the timeline moves but the scrollbar doesn't, or vice versa, and the two fall out of sync for the rest of the session.
03 / THE CHALLENGE
One timeline,two ways in.
A single scrubbed GSAP timeline cross-fades and scales seven full-bleed truck photo stages, bound to real scroll position through one ScrollTrigger over a dedicated scroll container (index.html:2134-2147). Each stage fires an updateHUD() callback at a specific timeline offset to swap the copy and specs shown alongside it (index.html:2098-2131). There is no canvas or WebGL involved, the effect is entirely cross-fading and scaling static photography.
The part that has to work is seekToStage() (index.html:2041-2062): instead of just jumping the timeline when a user clicks a stage control, it reads the live ScrollTrigger instance to compute the exact scroll pixel offset that corresponds to that timeline progress, then animates window.scrollTo to it. Organic scrolling and programmatic navigation stay on the same clock. If ScrollTrigger fails to initialize, the code falls back to seeking the timeline directly and calling updateHUD by hand, a real fallback path rather than a silent dead end.
04 / THE SOLUTION
What gotbuilt.
Scrubbed reveal sequence
One GSAP timeline cross-fades seven truck photo stages, bound to scroll via a single ScrollTrigger instance.
Scroll/seek parity
Stage navigation computes the real scroll offset from timeline progress, so scrolling and jumping never drift apart.
Fallback seek path
If ScrollTrigger fails to init, navigation still works by seeking the timeline and updating the HUD directly.
Real menu, NOK pricing
A full Norwegian menu with per-dish pricing, presented alongside the scrollytelling truck reveal.
05 / THE RESULT
Live,funnel next.
- Livecrazy-food-trucks-deploy.vercel.app
- Build windowRoughly 2026-09-09 to 09-11, three days, derived from file mtimes
- Owns the codeClient
BUILT WITH
Building something more atmospheric?
Next project
Chocoloco