The library

Curated, not a catalog dump.

Every signature component, built for a real site. Filter, preview live, copy in React or Vue.

Browse the library

Landmark Kits

Depth, not breadth.

A deep, stand-alone collection built around one system. The first Kit is Reveal - preloaders and hero sections, one mixable system, WebGL and GSAP. React, Vue, HTML / CSS / JS. Not for Webflow.

See the Menu Kit

Concepts, patterns, tools

Learn the vocabulary.

Definitions and examples for the GSAP and animation concepts behind production motion. Free, citable, and cross-linked with the components that use each idea.

Open concepts
GSAP component for HTML/CSS/JS

Logo Shuffle in HTML/CSS/JS.

A wall of client marks in a fixed hairline grid that turns over one cell at a time as the visitor scrolls: the old mark drifts off and blurs away, the new one arrives sharp from the other side. The stage stays put while the page scrolls past, and a pill with two arrows steps a whole set by hand.

Install

Drop Logo Shuffle into any HTML page

Logo Shuffle ships as plain HTML, CSS, and JavaScript - no build step, no bundler, no framework. Copy the three blocks (HTML markup, CSS styles, JS init) and paste them into any page. The component works in any CMS that lets you embed custom code: Webflow, Framer, Astro, vanilla HTML, WordPress, Squarespace.

example.html
Integrate

Where it goes in your page

Paste the HTML markup wherever the component should appear. Add the CSS to your stylesheet (or in a <style> tag). Add the JavaScript inside a <script> tag at the end of <body>, or in your site's footer custom code block.

In Webflow specifically: HTML goes in an Embed block, CSS goes in the page or project Custom Code <head> section, JS goes in the page Custom Code <body> section. The JSON paste flow (Designer → paste) handles the structure + classes for you; the Custom Code drop-ins handle the script and any custom CSS the JSON can't carry.

The component initializes on DOMContentLoaded automatically - no manual call needed.

Gotchas

Cells and the name row start empty

Every [data-anm-logo-shuffle=cell] is an empty div - the script builds its mark and client-name markup from the hidden pool at init. The pool can hold more logos than there are cells; extras just widen the rotation.

The pool item's content is opaque to the engine

Each [data-anm-logo-shuffle=logo] item is cloned wholesale (innerHTML) into a cell - swap the typographic marks for your own <img> or <svg> logos without touching the script.

Needs gsap AND ScrollTrigger globals

waitForGSAP polls for both before init - the scroll-driven turn cycle and the mobile-cell measurement both depend on ScrollTrigger.
FAQ

Common questions

Does Logo Shuffle work in Webflow?
Yes. The component ships with both a Webflow-compatible JSON paste (for the Designer) and standard HTML/CSS/JS for projects that prefer Custom Code. The Webflow tab on the main detail page has both formats.
Does Logo Shuffle work in WordPress, Squarespace, Framer, Astro, or other no-code platforms?
Yes. Anywhere you can add custom HTML, CSS, and JavaScript - the component works. Paste the markup into your page, add CSS to the styles section, and add JS to the script section. No framework required.
Do I need a build step for this version?
No. The HTML version is plain, copyable code that runs directly in the browser. No bundler, no transpiler, no npm install. Just paste and it works.
Can I use this with TypeScript?
The HTML version is plain JavaScript - no TypeScript types. If you want TypeScript, the React or Vue variants ship with proper type definitions. The HTML version is intended for projects that don't have a build step.

Copy the HTML/CSS/JS code

The full HTML/CSS/JS implementation lives on the component page, with the live demo, every format side by side, and the ability to edit and re-run it in the browser.

Open Logo Shuffle

Annnimate

Logo Shuffle is one of 90+ GSAP components, each shipping in React, Vue, and HTML/CSS/JS with the same production tuning.