Frame Scrub

Scroll drives a frame sequence through a canvas playhead

Customize

Frames
48
Scroll length
3.0vh
Smoothing
0.18
Stage height
0.72
Radius
20px
Trail
4
Slices
14
Cells
6
Lag
2.4
Punch
0.06
Grain
0.07
Vignette
0.34
Background
Accent

Props

26
framesstring[]

Explicit frame URLs in playback order. Takes priority over src.

Defaultundefined
videostring

Video URL sampled into count frames up front, then scrubbed. Needs CORS access.

Defaultundefined
videoQualitynumber

Width in pixels each video frame is decoded at.

Default720
srcstring

Frame URL pattern containing an {i} token, e.g. "/seq/shot-{i}.webp".

Defaultundefined
countnumber

Number of frames. Used with src, or as the length of the built-in sequence.

Default48
padnumber

Zero-pad width applied to {i} when expanding src.

Default3
startnumber

First frame number used when expanding src.

Default1
variant"plain" | "blend" | "ghost" | "slice" | "mosaic" | "wipe"

How consecutive frames are composited while scrubbing.

Default"blend"
scrollLengthnumber

Extra viewports of scroll the sequence is spread across.

Default3
smoothnumber

Scroll-following easing. 0 tracks the scrollbar exactly.

Default0.18
fit"cover" | "contain"

How each frame fills the stage.

Default"cover"
widthnumber

Maximum stage width in pixels.

Default1020
heightnumber

Stage height as a fraction of the viewport.

Default0.72
borderRadiusnumber

Stage corner radius in pixels.

Default20
backgroundstring

Colour painted behind every frame.

Default"#0a0a0a"
accentstring

Colour used by the built-in sequence and the readouts.

Default"#ededed"
trailnumber

Echo count for the ghost variant.

Default4
slicesnumber

Band count for the slice variant.

Default14
cellsnumber

Column count for the mosaic variant.

Default6
lagnumber

How many frames of lag the offset variants spread across.

Default2.4
punchnumber

Extra scale applied at the start of the scrub.

Default0.06
grainnumber

Film grain strength.

Default0.07
vignettenumber

Vignette strength.

Default0.34
showCounterboolean

Show the frame readout in the stage corner.

Defaulttrue
onFrameChange(index: number) => void

Fired when the settled frame index changes.

Defaultundefined
classNamestring

Extra classes for the section wrapper.

Default""