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. Sticky Cards Scroll

Sticky Cards Scroll

PreviousNext

A pinned scroll sequence where stacked cards lock in place and slide their inner content as you scroll, framed by an intro and outro section.

Open in
sticky-cards-scroll-demo

We build furniture that sits quietly in a room and outlasts the house.

Select

Every piece starts at the mill — quartersawn white oak and walnut, air-dried for two winters and chosen board by board for grain.

Select

Shape

Joints are cut by hand at the bench — mortise, tenon, dovetail — then dry-fitted twice before a single drop of glue goes in.

Shape

Finish

Surfaces are planed, scraped and rubbed with hardwax oil in six thin coats, so the timber stays open to the hand and ages evenly.

Finish

Deliver & Keep

We carry each piece in by hand and set it level. Every one is signed and dated, and comes back to the shop for repairs for life.

Deliver & Keep

Have a room in mind? Let's draw it together.

components/ui/sticky-cards-scroll-demo.tsx
import { StickyCardsScroll } from "@/registry/tween/sticky-cards-scroll"

export function StickyCardsScrollDemo() {
  return (
    <div className="w-full">
      <StickyCardsScroll />
    </div>
  )
}

Installation

pnpm dlx shadcn@latest add https://tweenui.dev/r/sticky-cards-scroll.json

Usage

import { StickyCardsScroll } from "@/components/ui/sticky-cards-scroll"
<StickyCardsScroll
  intro="We build furniture that sits quietly in a room and outlasts the house."
  outro="Have a room in mind? Let's draw it together."
  cards={[
    {
      title: "Select",
      copy: "Every piece starts at the mill — quartersawn white oak and walnut...",
      image:
        "https://images.unsplash.com/photo-1779031242509-af360178ebb3?q=80&w=800&h=1200&fit=crop&crop=center&auto=format",
      backgroundColor: "#d8c3a2",
      textColor: "#1c1915",
    },
    // ...
  ]}
/>

Each card pins to the viewport as it enters, stacking on top of the previous one, with the intro and outro sections framing the sequence on either end.

Props

PropTypeDefaultDescription
introReactNodeDefault copyHeading shown in the pinned intro section.
outroReactNodeDefault copyHeading shown in the outro section after the cards.
cardsStickyCardItem[]4 defaultsEach card is { title, copy, image, backgroundColor, textColor }.
heroImagestringDefault imageImage used in the optional hero section above the intro.
showHerobooleantrueToggle the hero section above the intro.
sectionHeightnumber | string"100vh"Height of each pinned section.
cardTranslatenumber14Vertical translate factor in vh for the card-inner slide.
classNamestring—Extra classes on the outer container.

Behavior

Every section pins for its full height as it reaches the top of the viewport. Each non-final card then tweens its inner content upward by (cardsLeft × cardTranslate)vh over the pin range, so deeper cards drift further and the stack reveals progressively as you scroll.

Performance and AccessibilityRise Fan Cards Scroll

On This Page

InstallationUsagePropsBehavior

Contribute

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