Documentation

Documentation

JavaScript

styleEffect

styleEffect

styleEffect applies the output of motion values to the .style attribute of one or more elements.

When these motion values update, the element will re-render once per frame during the render step of the frameloop.

const blur = motionValue(2)
const filter = transformValue(() => `blur(${blur.get()}px)`)

styleEffect("img", { filter })

In addition to regular styles, styleEffect supports:

  • Independent transforms (x, scaleY etc)

  • Default unit types (i.e use numbers like 100 instead of "100px")

  • CSS properties

Usage

Import styleEffect from "motion":

import { styleEffect } from "motion"

styleEffect accepts an element, list of elements, or CSS selector, plus a map of motion values:

const opacity = motionValue(0.5)
const backgroundColor = motionValue("#00f")

styleEffect("div", { opacity, backgroundColor })

When any of the motion values update, the element(s) will re-render on the next animation frame:

opacity.set(1)
animate(backgroundColor, "rgba(34, 255, 0, 1)")

Each motion value can be applied to any number of styles, and any number of elements.

const progress = motionValue(0)

styleEffect("#progress", {
  opacity: progress,
  scaleX: progress
})

Any motion value can be provided, including those defined by mapValue and transformValue:

const blur = motionValue(2)
const filter = transformValue(() => `blur(${blur.get()}px)`)

styleEffect("img", { filter })

Cancel

styleEffect returns a cleanup function which, when called, will stop applying changes to the motion values to the element:

const width = motionValue("0px")
const cancel = styleEffect("#progress", { width })

cancel()

styleEffect applies the output of motion values to the .style attribute of one or more elements.

When these motion values update, the element will re-render once per frame during the render step of the frameloop.

const blur = motionValue(2)
const filter = transformValue(() => `blur(${blur.get()}px)`)

styleEffect("img", { filter })

In addition to regular styles, styleEffect supports:

  • Independent transforms (x, scaleY etc)

  • Default unit types (i.e use numbers like 100 instead of "100px")

  • CSS properties

Usage

Import styleEffect from "motion":

import { styleEffect } from "motion"

styleEffect accepts an element, list of elements, or CSS selector, plus a map of motion values:

const opacity = motionValue(0.5)
const backgroundColor = motionValue("#00f")

styleEffect("div", { opacity, backgroundColor })

When any of the motion values update, the element(s) will re-render on the next animation frame:

opacity.set(1)
animate(backgroundColor, "rgba(34, 255, 0, 1)")

Each motion value can be applied to any number of styles, and any number of elements.

const progress = motionValue(0)

styleEffect("#progress", {
  opacity: progress,
  scaleX: progress
})

Any motion value can be provided, including those defined by mapValue and transformValue:

const blur = motionValue(2)
const filter = transformValue(() => `blur(${blur.get()}px)`)

styleEffect("img", { filter })

Cancel

styleEffect returns a cleanup function which, when called, will stop applying changes to the motion values to the element:

const width = motionValue("0px")
const cancel = styleEffect("#progress", { width })

cancel()

styleEffect applies the output of motion values to the .style attribute of one or more elements.

When these motion values update, the element will re-render once per frame during the render step of the frameloop.

const blur = motionValue(2)
const filter = transformValue(() => `blur(${blur.get()}px)`)

styleEffect("img", { filter })

In addition to regular styles, styleEffect supports:

  • Independent transforms (x, scaleY etc)

  • Default unit types (i.e use numbers like 100 instead of "100px")

  • CSS properties

Usage

Import styleEffect from "motion":

import { styleEffect } from "motion"

styleEffect accepts an element, list of elements, or CSS selector, plus a map of motion values:

const opacity = motionValue(0.5)
const backgroundColor = motionValue("#00f")

styleEffect("div", { opacity, backgroundColor })

When any of the motion values update, the element(s) will re-render on the next animation frame:

opacity.set(1)
animate(backgroundColor, "rgba(34, 255, 0, 1)")

Each motion value can be applied to any number of styles, and any number of elements.

const progress = motionValue(0)

styleEffect("#progress", {
  opacity: progress,
  scaleX: progress
})

Any motion value can be provided, including those defined by mapValue and transformValue:

const blur = motionValue(2)
const filter = transformValue(() => `blur(${blur.get()}px)`)

styleEffect("img", { filter })

Cancel

styleEffect returns a cleanup function which, when called, will stop applying changes to the motion values to the element:

const width = motionValue("0px")
const cancel = styleEffect("#progress", { width })

cancel()

Level up your animations with Motion+

Access to 100+ premium examples, exclusive APIs like Cursor, private Discord and GitHub, and powerful VS Code animation editing tools.

One-time payment, lifetime updates.

Stay in the loop

Subscribe for the latest news & updates.

Stay in the loop

Subscribe for the latest news & updates.