02UI

Infinite draggable grid

An infinite draggable grid is a field of items you can drag in x and y, wrapping so the set never shows an edge.

Lists and cardsBuild difficulty: HardDraggable

Also called Endless grid, Draggable gallery, Wrap grid, Infinite tile field.

Here it is working.

Drag in any direction

Drag the tiles. They stay inside the window.

For designers

You reach for this when the job is browsing a lot of similar pieces: images, tiles, covers. People drag, throw, and keep going. If they need to land on one item as a choice in a row, you wanted Draggable slider. If nobody is choosing, only watching a row pass, you wanted Infinite marquee. The wrapping has to be invisible. A jump at the loop is worse than a hard edge. Items that are links need a drag threshold so a pan does not count as a press. Reduced motion can show a normal wrapping grid that scrolls, with no throw.

When to use infinite draggable grid

Use this when

  • The set is large and the items are equivalent to browse.
  • Dragging in two axes is better than paging.
  • You can wrap the tiles so the loop does not jump.
  • Press and drag can be told apart.
  • Reduced motion can fall back to ordinary scroll.

Reach for something else when

How to build it

Lay out enough tiles to fill the viewport plus a buffer. Duplicate the set so wrapping has copies to slide in. Draggable on x and y, with InertiaPlugin so a throw continues after release. On each move, wrap position: when a tile leaves one side, place it on the other. The travel has to match the tile size. Set a clickable test so a pan does not fire the link. On reduced motion, skip Draggable and let the grid scroll.

Official GSAP

Draggable type x,y.

Draggable.create('.grid', { type: 'x,y', bounds: '.mask', edgeResistance: 0.8, inertia: false });

Every plugin ships in the public GSAP package. Nothing here is copied from a paid pack.

Common questions

Slider or grid?
A slider is a row or a ring you page. A grid is a field you pan.
Will links still work?
Yes, if you ignore a press that moved more than a few pixels.
How many tiles?
Enough to fill the view plus one set for the wrap.
What does reduced motion do?
A static grid that scrolls in the usual way.
Can it loop a small set?
It can, but repeats will be obvious.

Save as skill

A SKILL.md for this one animation: what it is, the official docs link, and a copy-paste block with the reduced-motion branch already in it. Copy gives you the same words.

Use this with your AI

Save the skill, drop it into Cursor, Claude, or whatever you use, and ask for this motion. That is all. The skill tells the agent to open this page, watch the working demo, and match it.

Last reviewed 26 AUG 2026

Next: Mega menu