A draggable, endlessly-panning canvas for showcasing portfolio work — no two screens ever repeat.
Turn a static portfolio grid into an explorable canvas. This component lets visitors drag across an unbounded 2D space filled with your images, arranged in organic, staggered columns — the kind of interaction usually reserved for high-end agency sites.
Unlike a typical "infinite scroll" that just loops the same content, this canvas generates its layout procedurally: every position is computed from a seeded algorithm, so the arrangement of images, their heights, and their rotation never visibly repeats as you pan — no matter how far you drag. Panning back to a spot you've already seen shows you the same thing, so it always feels intentional, never random or jittery.
True infinite panning — drag in any direction with no boundaries, no dead ends, no empty space
Never looks repetitive — layout is procedurally generated per position, not copy-pasted from a fixed grid
Smooth drag physics — momentum and elastic drag feel out of the box, fully adjustable
Dot-grid background — subtle, infinitely-tiling grid that pans with the canvas
Performance-optimized — only renders the tiles near your viewport, so it stays fast even after long dragging sessions
One-click reshuffle — change the Layout Seed to instantly regenerate the whole arrangement
Fully customizable — column width, card gaps, min/max card sizes, border radius, shadow, colors, all exposed as Framer property controls
Drop in your own images — just populate the Images array, no code required
Agency and studio portfolios
Photography galleries
Case study showcases
"Our work" landing page sections
A draggable, endlessly-panning canvas for showcasing portfolio work — no two screens ever repeat.
Turn a static portfolio grid into an explorable canvas. This component lets visitors drag across an unbounded 2D space filled with your images, arranged in organic, staggered columns — the kind of interaction usually reserved for high-end agency sites.
Unlike a typical "infinite scroll" that just loops the same content, this canvas generates its layout procedurally: every position is computed from a seeded algorithm, so the arrangement of images, their heights, and their rotation never visibly repeats as you pan — no matter how far you drag. Panning back to a spot you've already seen shows you the same thing, so it always feels intentional, never random or jittery.
True infinite panning — drag in any direction with no boundaries, no dead ends, no empty space
Never looks repetitive — layout is procedurally generated per position, not copy-pasted from a fixed grid
Smooth drag physics — momentum and elastic drag feel out of the box, fully adjustable
Dot-grid background — subtle, infinitely-tiling grid that pans with the canvas
Performance-optimized — only renders the tiles near your viewport, so it stays fast even after long dragging sessions
One-click reshuffle — change the Layout Seed to instantly regenerate the whole arrangement
Fully customizable — column width, card gaps, min/max card sizes, border radius, shadow, colors, all exposed as Framer property controls
Drop in your own images — just populate the Images array, no code required
Agency and studio portfolios
Photography galleries
Case study showcases
"Our work" landing page sections