Help guide

Scroll To node

Updated June 21, 2026

Product media placeholder

Replace this area with a screenshot or short walkthrough video during the media sweep.

F337 — animated scroll-to. Trigger-launched tween over the scroller's scrollTop. Resolves the target Y from a CSS selector (or "top" / "bottom") at trigger time, or from the dynamic `targetY` input port when wired (takes precedence over the selector). Lerps from current scroll through the configured ease, outputs a `value` to feed a domPropertyWrite(scrollTop). Pure-graph; no imperative API.

Type scrollToCategory animationContext sharedDynamic ports noCompound no

Inputs

PortTypeDescription
triggerfloatRising-edge launches the tween. Wire from a click pulse (`eventListener.fired`, `clickStateDispatcher.pulse`), a `loadPulse`, or any other rising-edge source. Each rising edge restarts the tween from the current scrollY through the configured ease.
targetYfloatOptional dynamic destination in document scroll-coords (px). When wired to a finite value, overrides Target Selector at trigger time. NaN (unwired) falls back to selector-based resolution. Use when the destination is graph-computed (e.g. `remap` over a pin-anchor's flowTop + scrollDistance for click-to-pin-progress patterns).

Outputs

PortTypeDescription
valuefloatAnimated current scroll position the tween is producing (px). Wire into a `domPropertyWrite(scrollTop)` to drive the page. Stays at the last-tween-end value when idle so the downstream write dirty-checks to a no-op.
progressfloatTween progress 0..1 while animating, 0 when idle. Useful for chaining downstream "during scroll-to" effects (e.g. fade UI, dim overlay).
isScrollingfloat1 while the tween is animating, 0 when idle (before first trigger or after tween completes). Drive UI that should disable input or show a "scrolling…" indicator during programmatic scroll.

Parameters

ParameterTypeDefaultDescription
targetSelectorelementSelector""CSS selector for the element to scroll to (resolved at trigger time so the value reflects current layout). Two reserved keywords: `top` (scrolls to 0) and `bottom` (scrolls to scrollHeight − viewportH). Leave empty when wiring a dynamic destination through the `targetY` input port instead — the port wins over this selector when finite.
durationfloat0.8Tween duration in seconds. The eased lerp runs from current scrollY at trigger time to the resolved target Y over this window. Default 0.8s. min 0; step 0.1
easeeasingCurve"easeInOutCubic"Easing curve applied to the [0..1] tween progress. Same vocabulary as tween / propertyAnimation — pick a preset (linear / power / cubic / back / elastic) or pass a parametric string like `cubic-bezier(0.4, 0, 0.2, 1)` / `back.out(1.4)`. Custom eases registered via F333 also work here.
offsetYfloat0Subtracted from the resolved target Y, in pixels. Use to compensate for a sticky header (e.g. `60` lands the target 60px below the viewport top) or to nudge the destination above/below the natural element edge. step 1
scrollerelementSelector""CSS selector for the scrolling element. Empty = the document scroller (`<html>`). Set when scrolling inside an internally-scrolled panel (e.g. a side-pane with `overflow: auto`). The same selector controls where reads + writes go.

Related nodes

Envelope

Use scrollTo as the node type inside a graph node envelope. Add id, optional params, optional connections, and optional activeWhen based on the guide context.

Generated source

Registry faster-motion-docs/node-registry.jsonCategory page /help/faster-motion/faster-motion-node-category-animation/

Was this guide helpful?

Sunny Arora

Written by

Sunny Arora

Get technical deep dives delivered to your inbox

Join creators and developers who get exclusive insights, tutorials, and behind-the-scenes content every week.

No spam. Unsubscribe anytime.

Continue Exploring

You might also enjoy