tween
ComponentsTemplatesShowcaseContact

Command Palette

Search for a command to run...

Getting Started
  • Introduction
  • Installation
  • StoryNew
Guides
  • Motion Principles
  • Scroll and Smooth Scroll
  • Performance and Accessibility
Scroll Animations
  • Sticky Cards Scroll
  • Rise Fan Cards Scroll
  • Rotate Stack Scroll
  • Doodle Lens ScrollNew
  • Slit Open Hero ScrollNew
  • Logo Mask Zoom ScrollNew
  • ASCII Dissolve ScrollNew
  • Lottie Flight ScrollNew
  • Inline Icon Text ScrollNew
  • Starfield ScrollNew
  • Name Swap ScrollNew
  • Spotlight Gallery HeroNew
  • Slit Rotate Hero ScrollNew
  • Stroke Cover ScrollNew
  • Stroke Rows ScrollNew
Text Animations
  • Text Skew Reveal
  • Block Text Reveal
Hover & Cursor
  • Image Trail Cursor
  • Cursor Depth Logo
  • Physics Tag Drop
  • Elastic Card ListNew
  • Magnetic Cards SpringNew
Sliders & Carousels
  • Wheel Fullscreen Carousel
  • Ripple Displacement Slider
  • Three.js Blend Slider
  • Stacked Deck Slider
  • Orbit Cylinder SliderNew
  • Fan Stack SliderNew
  • Exponential Strip SliderNew
  • Dual Column SliderNew
Galleries & Grids
  • Scroll Wave Gallery
Menus & Navigation
  • Shrink Page MenuNew
Preloaders & Intros
  • Floating Items RevealNew
  • Word Cycle RevealNew
  • Tile Grid LoaderNew
Page Transitions
  • Panel Assembly TransitionNew
3D & WebGL
  • Fractal Glass Hero
  • Fluid Cursor Canvas
  • Fluid Portrait Hero
  • Fluid Gradient Canvas
  • Inversion Lens HoverNew
UI Elements
  • Circular Widgets
  • Vinyl Cover
  • Image Explosion Footer
  • Accordion Image FramesNew

(Tween) — Motion registry

Animated components & full sites, one command away.

Product

  • Components
  • Templates
  • Installation
  • Guides
  • Blog
  • Contact

Categories

  • Scroll Animations
  • Text Animations
  • Hover & Cursor
  • Sliders & Carousels
  • Galleries & Grids
  • Menus & Navigation
  • Preloaders & Intros
  • Page Transitions
  • 3D & WebGL
  • UI Elements
TWEEN
ease: power2.inOut0.00s
© 2026 TweenBack to topBuilt by mohammad
  1. Docs/
  2. Components/
  3. Elastic Card List

Elastic Card List

PreviousNext

A stacked title list where the hovered row grows while its neighbours shrink by proximity, the label swaps to a handwritten cut, and four tilted preview cards spring in with elastic jitter.

Open in
elastic-card-list-demo

Fernhollow Knit — Autumn 07

Low Light Wool

Low Light Wool

Open Weave

Open Weave

Window Hours

Window Hours

Salt Air Knits

Salt Air Knits

Ember Red

Ember Red

components/ui/elastic-card-list-demo.tsx
import { ElasticCardList } from "@/registry/tween/elastic-card-list"

export function ElasticCardListDemo() {
  return <ElasticCardList />
}

Installation

pnpm dlx shadcn@latest add https://tweenui.dev/r/elastic-card-list.json

Usage

import { ElasticCardList } from "@/components/ui/elastic-card-list"
<ElasticCardList
  heading="Fernhollow Knit — Autumn 07"
  items={[
    {
      label: "Low Light Wool",
      cards: ["/wool-1.jpg", "/wool-2.jpg", "/wool-3.jpg", "/wool-4.jpg"],
    },
    {
      label: "Open Weave",
      cards: ["/weave-1.jpg", "/weave-2.jpg", "/weave-3.jpg", "/weave-4.jpg"],
    },
  ]}
/>

How it works

  • Every row is measured once fonts are ready and locked to the tallest row plus a little headroom.
  • Hovering a row grows it by hoverGrowth pixels. The other rows shrink by a share of that growth weighted by 1 / distance, so the list keeps its total height and the nearest neighbours give up the most.
  • The resting label squashes (scaleX 0.75, scaleY 1.25) and blurs out while a handwritten copy of the same label pops in with a back.out overshoot.
  • Four cards sit in the corners of the stage. Entering the list springs them in with elastic.out; each row hover swaps their images, moves them toward that row with random x, y and rotation jitter, and leaving the list scales them back to zero.
  • A ResizeObserver re-measures the rows when the width changes. With prefers-reduced-motion: reduce the list renders static and the cards stay hidden.

The default fonts fall back to system faces. Load Gasoek One and Nanum Pen Script (or pass displayFont and scriptFont) for the original look.

Props

PropTypeDefaultDescription
itemsElasticCardListItem[]5 defaultsEach item is { label, cards } with up to four image URLs.
headingReactNode"Fernhollow Knit — Autumn 07"Small line above the list.
displayFontstringheavy display stackFont stack for the resting label.
scriptFontstringhandwritten stackFont stack for the hover label.
hoverGrowthnumber50Extra height in pixels the hovered row gains.
backgroundstring"#efe9e1"Color around the rounded panel.
panelColorstring"#1c1714"Panel background.
classNamestring—Extra classes on the outer container.
Physics Tag DropMagnetic Cards Spring

On This Page

InstallationUsageHow it worksProps

Contribute

  • Report an issue
  • Request a feature
  • Edit this page