Kinetic UI
Back to Introduction
Scrollytelling

Sticky Sequence Container

An Apple-style scrollytelling container that scrubs a video purely based on scroll progress.

Quick Actions
CLI Installation
npx kinetic-ui-cli@latest add sticky-sequence
Sticky Sequence Container

Scroll Down

Buffer: 0%

Apple-Style
Scrollytelling.

Video playback is bound natively to your scroll wheel.

End of Sequence

Installation

npx kinetic-ui-cli@latest add sticky-sequence-container

Architecture

This component is the holy grail of cinematic web design. Instead of dealing with massive arrays of 150+ PNG sequences (which severely bloats bundles), it uses a much more performant method: Video Scrubbing.

We leverage framer-motion's useScroll to calculate exact page progress, map it to a 0-1 float, and manually set the HTMLVideoElement.currentTime to sync perfectly with the user's scroll wheel inside a sticky container.

Usage Guide

1. Import the Component

Import the component into your React or Next.js page:

import { StickySequence } from "@/components/creative/sticky-sequence";

2. Implementation Example

Render the component and customize its behavior by passing props:

import { StickySequence } from "@/components/creative/sticky-sequence";

export default function Example() {
  return (
    <div className="w-full flex items-center justify-center p-8">
      <StickySequence
      >
        <div>Content goes here</div>
      </StickySequence>
    </div>
  );
}
Performance Notes
  • Uses CSS hardware acceleration via GPU transform-binds.
  • Damped interpolation minimizes paint-redraw flashes.
  • Tree-shakable import: only compiles elements requested.
Accessibility Notes
  • Full keyboard focus-ring navigation support (`Tab`/`Shift+Tab`).
  • ARIA roles mapped correctly for assistive screen readers.
  • Respects `prefers-reduced-motion` system toggles.