Help guide

DOM Variables Write node

Updated June 21, 2026

DOM Variables Write node

Product media placeholder

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

Batched CSS-custom-property writer with per-variable remap built in. Takes a single shared input value and fans it out to N CSS variables (`--foo`) on one element, with each variable carrying its own input/output range, unit, easing curve, and clamp. Replaces the common `1 source → N remap → N domPropertyWrite` chain — collapses to a single node in author view.

Type domVariablesWriteCategory boundaryContext sharedDynamic ports noCompound no

Inputs

PortTypeDescription
valuefloatShared input value. Each declared variable remaps it independently into its own output range using its `inputMin/inputMax → outputMin/outputMax` pair.
selectorstringF357 — wireable selector. When connected (e.g. from `splitText.pieceSelector`), the wired value overrides the `CSS Selector` param at bind time. Unwired = the param value is used.

Outputs

PortTypeDescription
--No ports declared.

Parameters

ParameterTypeDefaultDescription
selectorelementSelector""CSS selector for the element receiving the variable writes. Multiple matches: only the first is written (use a forEach instance with `{ "fromScope": "selector" }` for per-element fan-out).
propertiesdomVariablesChannels{}CSS custom properties to write. Each row defines one channel: variable name (must start with `--`), output range (`outputMin` / `outputMax`), unit, and easing curve. The shared `value` input is remapped per-channel using these settings. `inputMin` / `inputMax` default to [0, 1] (most common case for normalized progress / hover gates) and clamp defaults to on — use raw JSON edit if you need to override those.

Use cases

  • Scroll-driven CSS-variable layouts — one `scrollTrigger.progress` fans out to several `--*` variables that the cascade reads via `calc()` (bento grid expansion, gradient stop drift, accent-hue interpolation).
  • Hover gate driving theme variables — `hover.hover` (0..1) → `--accent-hue`, `--accent-sat`, `--shadow-elev` with per-variable ranges and easing, no remap noise in the graph.
  • Pose-style writes for non-transform properties — when you want to drive 3+ CSS variables coherently from one input, packing them into one node beats the visual clutter of N separate remap+write pairs.

Envelope

Use domVariablesWrite 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-boundary/

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