GregØry PearsØn . Design

44.95°N, 93.09°W

(UTC)

GregØry PearsØn . Design

44.95°N, 93.09°W

(UTC)

Scroll snap rail

Type

Experiments

Date

BUILD NØTES

Elevating the standard vertical z-pattern approach for text heavy content @ smaller breakpoints.


Goals:

A rail of columns is a way to hold more copy than a page has room for. The question is how it should feel when someone moves it. The idea is that a drag followed by a short settle gives the rail a place to land every time, so a column is always aligned to the grid when the motion stops. The two widths test whether the same choreography holds when the distances change.


Building the motion study in Figma Make:

The rail has three columns. At 768 wide a column is most of the width, and at 360 it's one column with the next peeking. The rail stops once per column, and the last stop sits where the rail ends.

There are four moves on an 8.6 second loop. Forward to the second column, forward to the third, back to the second, back to the first. Each move has two segments. The drag runs 600 ms on Exponential, and the cursor and the rail travel together. The settle runs on Circle In/Out and takes 400 ms on the first move and 300 ms on the other three.

The cursor has three glyphs, an arrow, an open hand and a closed hand. They swap with HOLD opacity, because Figma Motion has no interaction triggers and a hover or a drag has to be drawn. The active line under each column switches at the middle of the drag.

What Figma Motion does well:

  • Run separate easing on each segment of one track

  • Switch a layer on or off with HOLD opacity

  • Export CSS @keyframes, with the easing on the keyframe that starts the segment

What Figma Motion doesn't do yet:

  • Respond to a hover, press or drag, so the cursor is a sequence of glyphs

  • Replace a transform, since translation composes with the resting one

  • Reflect playback settings in the export, so a play once timeline still exports as infinite



Where the rules came from:

The brand motion spec has two curves. Exponential is the default for moves, and Circle In/Out is for arrivals and settles. The rail uses them that way, with the drag on Exponential and the settle on Circle In/Out. Every segment is X only and sits on a duration token, at 600, 400 and 300 ms. Each move totals about a second.


Reuse

The pattern is a rail with a pitch, a list of stops, a drag segment and a settle segment. A new width changes the pitch and the stops and leaves the timings alone. Another column adds a stop and a move. The cursor's travel is the drag distance, so it comes from the same numbers.


More Experiments

More Experiments
Loading
Heading switch

BUILD NØTES

Loading
Heading switch

BUILD NØTES

Loading
Tab Rail w/ Figma Motion

BUILD NØTES

Loading
Tab Rail w/ Figma Motion

BUILD NØTES

Loading
Hero fit test

BUILD NØTES

Loading
Hero fit test

BUILD NØTES

Loading
Heading switch

BUILD NØTES

Loading
Tab Rail w/ Figma Motion

BUILD NØTES

Loading
Hero fit test

BUILD NØTES

Loading
Author Stack Interaction

BUILD NØTES

GregØry PearsØn . Design

44.95° N, -93.09° W

(UTC)

GregØry PearsØn . Design

44.95° N, -93.09° W

(UTC)

GregØry PearsØn . Design

44.95° N, -93.09° W

(UTC)