Scroll Mesh Bend
A field of photos layered at different depths that bends like fabric when you scroll fast and settles flat when you stop. Near photos are bigger and bend more, so the page reads with real depth.
One of 96 GSAP components in React, Vue and HTML.
On mobile
Take the free components with you.











In React, Vue and HTML, in your inbox, ready when you're back at your desk.
How it's built.
The first version bent every image with one number. Scroll fast, the whole sheet bows, stop, the whole sheet snaps back. It looked like a rubber stamp, not cloth. Cloth does not move as one piece: the edge that leads the motion reacts first and the rest catches up a beat later. So every sheet runs two springs instead of one, a stiff one that the leading edge follows and a softer one that the trailing edge follows, and every point on the mesh sits somewhere on a blend between them. When you stop, the leading edge is already flat while the far end is still swinging, and that lag is the whole effect.
An earlier cut bowed the sheet toward the camera, and on a perspective stage that reads as a zoom: the photo grows while you scroll. The bend now stays in the sheet's own plane, the middle dragging behind its edges, so size only ever comes from depth. Depth does two jobs. A far sheet looks smaller and drifts slower, and it also bends less, the way distant things move less than near ones.
Drop in your own photos, decide how heavy the cloth feels with the stiffness and damping, and cap how deep the near sheets can curl. At rest everything is perfectly flat; nothing moves until someone scrolls. On a phone the mesh gets lighter on its own.
What you'll need.
Install
- GSAP
- ScrollTrigger
- three
Attributes, tips, use cases and full code are part of access.
The preview and provenance stay public. Tune-it docs, the data-anm-* attribute table, real-world use cases and the copy-ready code unlock the moment you sign in.
Frequently asked
- Does Scroll Mesh Bend work with React and Vue?
- Scroll Mesh Bend ships as React (Next.js included), Vue 3 (Nuxt included), plain HTML/CSS/JS - the same animation in each format. The React version uses the official useGSAP hook with cleanup handled; the Vue version is a real single-file component with <script setup>.
- Do I need GSAP to use Scroll Mesh Bend?
- Yes. Scroll Mesh Bend is built on GSAP directly, and GSAP has been 100% free for commercial use, including every plugin, since version 3.13. The component page lists exactly what to install.
- Can I customize Scroll Mesh Bend without editing code?
- Scroll Mesh Bend exposes 7 tunable controls in the Customize panel on this page - drag the values, watch the live preview respond, and the code you copy carries your exact settings.
- Is Scroll Mesh Bend free?
- Scroll Mesh Bend is part of the Annnimate Library, a paid subscription (from EUR 20/month billed quarterly, or EUR 199/year). The live preview and customization run free on this page; the paste-ready code is for members.
- What if Scroll Mesh Bend is not right for my project?
- Annnimate comes with a 14-day money-back guarantee. If Scroll Mesh Bend or the library does not fit your project, reply to your receipt within 14 days for a full refund, no questions asked.
- Can I use Scroll Mesh Bend in client projects?
- Yes. The Annnimate license covers commercial and client work - ship Scroll Mesh Bend on as many projects as you build, with no attribution required.
- Does Scroll Mesh Bend respect prefers-reduced-motion?
- Yes. Every Annnimate component handles prefers-reduced-motion via gsap.matchMedia, so users who opt out of motion get an effectively instant, readable state.
