文档

文档

JavaScript

glide

glide

注意:此 API 已弃用。您可以将 type: "inertia" 与新的 animate() 一起使用函数.

—-

glide 可以使用动量物理学来制作变换动画。这非常适合创建滚动动量动画。

import { animate, glide } from "motion"

animate(
  element,
  { x: 500 },
  { easing: glide() }
)

注意: glide 是一个模拟,因此提供的目标关键帧和 duration 将被覆盖。

速度

glide 将自动将任何正在运行的动画的速度传递到下一个动画,因此中断动画会感觉很自然。

这可以通过手动将 velocity 传递给 glide 来覆盖。velocity 以单位/秒为单位进行测量。

animate(
  "#carousel",
  { x: 100 },
  { easing: glide({ velocity: 1000 }) }
)

如果您想为每个值传递不同的 velocity(例如,在指针手势结束时制作动画),您可以创建特定于值的选项

animate(
  "#ball",
  { x: 0, y: 0 },
  {
    x: { easing: glide({ velocity: 200 }) },
    y: { easing: spring({ velocity: 500 }) }
  }
)

边界

通过设置 min 和/或 max,您可以为 glide 动画设置边界。如果动画值超出这些边界,则spring动画将开始捕捉该值并将其动画到超出的边界。

glide({ min: -100, max: 100 })

选项

velocity

默认值: 0 或值的当前速度

开始 glide 动画的速度(单位/秒)。

glide({ velocity: 1000 })

power

默认值: 0.8

power 影响初始 velocity 有多少被纳入动画,从而影响动画滑行的距离。

值越高,动画投掷得越远,感觉越轻,而值越低,感觉越重。

glide({ power: 1 })

decay

默认值: 0.325

用于计算速度衰减的时间常数(以秒为单位)。值越高,动画持续时间越长,减速越缓慢,感觉越轻。

glide({ decay: 0.5 })

restSpeed

默认值: 2,或 0.05 (对于 scale)

弹簧动画被认为完成的最低速度(以绝对单位/秒为单位)。

spring({ restSpeed: 1 })

restDistance

默认值: 0.50.01 (对于 scale)

弹簧动画被认为完成的距动画目标的最小距离。

spring({ restDistance: 0.1 })

changeTarget

glide 动画自动计算要动画到的目标。通过设置 changeTarget,您可以获取此计算的目标并返回一个新的目标。

例如,以下示例中的函数会将目标捕捉到下一个 100

const roundTo = 100

glide({
  changeTarget: (target) => Math.ceil(target / roundTo) * roundTo
})

min

glide 动画的最小边界。如果动画值超出此边界,则弹簧动画将接管以将值捕捉到 min

glide({ min: -100 })

max

glide 动画的最大边界。如果动画值超出此边界,则弹簧动画将接管以将值捕捉到 max

glide({ max: 100 })

bounceStiffness

默认值: 100

如果动画超出 min/max 定义的边界,则弹簧的吸引力。值越高,运动越快、越锐利。

glide({ min: 100, bounceStiffness: 500 })

bounceDamping

默认值: 10

弹簧的阻力。值越高,弹簧的弹性越小。

glide({ max: 100, bounceDamping: 30 })

局限性

目前 spring 缓动存在一些局限性。

持续时间

damping: 0 的弹簧可以持续无限长的时间,但 Web Animations API 需要有限的 duration。因此,弹簧目前的上限为 10 秒(对于绝大多数 UI 动画来说,这已经足够长了)。
相对于 stiffness 增加 damping 以减少动画的持续时间。

时间线关键帧

springtimeline 中受支持,但独立的变换必须使用开始和结束关键帧定义:{ x: [0, 100] }

无硬件加速

spring 仅适用于独立的变换,这些变换在浏览器中尚未进行硬件加速。

注意:此 API 已弃用。您可以将 type: "inertia" 与新的 animate() 一起使用函数.

—-

glide 可以使用动量物理学来制作变换动画。这非常适合创建滚动动量动画。

import { animate, glide } from "motion"

animate(
  element,
  { x: 500 },
  { easing: glide() }
)

注意: glide 是一个模拟,因此提供的目标关键帧和 duration 将被覆盖。

速度

glide 将自动将任何正在运行的动画的速度传递到下一个动画,因此中断动画会感觉很自然。

这可以通过手动将 velocity 传递给 glide 来覆盖。velocity 以单位/秒为单位进行测量。

animate(
  "#carousel",
  { x: 100 },
  { easing: glide({ velocity: 1000 }) }
)

如果您想为每个值传递不同的 velocity(例如,在指针手势结束时制作动画),您可以创建特定于值的选项

animate(
  "#ball",
  { x: 0, y: 0 },
  {
    x: { easing: glide({ velocity: 200 }) },
    y: { easing: spring({ velocity: 500 }) }
  }
)

边界

通过设置 min 和/或 max,您可以为 glide 动画设置边界。如果动画值超出这些边界,则spring动画将开始捕捉该值并将其动画到超出的边界。

glide({ min: -100, max: 100 })

选项

velocity

默认值: 0 或值的当前速度

开始 glide 动画的速度(单位/秒)。

glide({ velocity: 1000 })

power

默认值: 0.8

power 影响初始 velocity 有多少被纳入动画,从而影响动画滑行的距离。

值越高,动画投掷得越远,感觉越轻,而值越低,感觉越重。

glide({ power: 1 })

decay

默认值: 0.325

用于计算速度衰减的时间常数(以秒为单位)。值越高,动画持续时间越长,减速越缓慢,感觉越轻。

glide({ decay: 0.5 })

restSpeed

默认值: 2,或 0.05 (对于 scale)

弹簧动画被认为完成的最低速度(以绝对单位/秒为单位)。

spring({ restSpeed: 1 })

restDistance

默认值: 0.50.01 (对于 scale)

弹簧动画被认为完成的距动画目标的最小距离。

spring({ restDistance: 0.1 })

changeTarget

glide 动画自动计算要动画到的目标。通过设置 changeTarget,您可以获取此计算的目标并返回一个新的目标。

例如,以下示例中的函数会将目标捕捉到下一个 100

const roundTo = 100

glide({
  changeTarget: (target) => Math.ceil(target / roundTo) * roundTo
})

min

glide 动画的最小边界。如果动画值超出此边界,则弹簧动画将接管以将值捕捉到 min

glide({ min: -100 })

max

glide 动画的最大边界。如果动画值超出此边界,则弹簧动画将接管以将值捕捉到 max

glide({ max: 100 })

bounceStiffness

默认值: 100

如果动画超出 min/max 定义的边界,则弹簧的吸引力。值越高,运动越快、越锐利。

glide({ min: 100, bounceStiffness: 500 })

bounceDamping

默认值: 10

弹簧的阻力。值越高,弹簧的弹性越小。

glide({ max: 100, bounceDamping: 30 })

局限性

目前 spring 缓动存在一些局限性。

持续时间

damping: 0 的弹簧可以持续无限长的时间,但 Web Animations API 需要有限的 duration。因此,弹簧目前的上限为 10 秒(对于绝大多数 UI 动画来说,这已经足够长了)。
相对于 stiffness 增加 damping 以减少动画的持续时间。

时间线关键帧

springtimeline 中受支持,但独立的变换必须使用开始和结束关键帧定义:{ x: [0, 100] }

无硬件加速

spring 仅适用于独立的变换,这些变换在浏览器中尚未进行硬件加速。

注意:此 API 已弃用。您可以将 type: "inertia" 与新的 animate() 一起使用函数.

—-

glide 可以使用动量物理学来制作变换动画。这非常适合创建滚动动量动画。

import { animate, glide } from "motion"

animate(
  element,
  { x: 500 },
  { easing: glide() }
)

注意: glide 是一个模拟,因此提供的目标关键帧和 duration 将被覆盖。

速度

glide 将自动将任何正在运行的动画的速度传递到下一个动画,因此中断动画会感觉很自然。

这可以通过手动将 velocity 传递给 glide 来覆盖。velocity 以单位/秒为单位进行测量。

animate(
  "#carousel",
  { x: 100 },
  { easing: glide({ velocity: 1000 }) }
)

如果您想为每个值传递不同的 velocity(例如,在指针手势结束时制作动画),您可以创建特定于值的选项

animate(
  "#ball",
  { x: 0, y: 0 },
  {
    x: { easing: glide({ velocity: 200 }) },
    y: { easing: spring({ velocity: 500 }) }
  }
)

边界

通过设置 min 和/或 max,您可以为 glide 动画设置边界。如果动画值超出这些边界,则spring动画将开始捕捉该值并将其动画到超出的边界。

glide({ min: -100, max: 100 })

选项

velocity

默认值: 0 或值的当前速度

开始 glide 动画的速度(单位/秒)。

glide({ velocity: 1000 })

power

默认值: 0.8

power 影响初始 velocity 有多少被纳入动画,从而影响动画滑行的距离。

值越高,动画投掷得越远,感觉越轻,而值越低,感觉越重。

glide({ power: 1 })

decay

默认值: 0.325

用于计算速度衰减的时间常数(以秒为单位)。值越高,动画持续时间越长,减速越缓慢,感觉越轻。

glide({ decay: 0.5 })

restSpeed

默认值: 2,或 0.05 (对于 scale)

弹簧动画被认为完成的最低速度(以绝对单位/秒为单位)。

spring({ restSpeed: 1 })

restDistance

默认值: 0.50.01 (对于 scale)

弹簧动画被认为完成的距动画目标的最小距离。

spring({ restDistance: 0.1 })

changeTarget

glide 动画自动计算要动画到的目标。通过设置 changeTarget,您可以获取此计算的目标并返回一个新的目标。

例如,以下示例中的函数会将目标捕捉到下一个 100

const roundTo = 100

glide({
  changeTarget: (target) => Math.ceil(target / roundTo) * roundTo
})

min

glide 动画的最小边界。如果动画值超出此边界,则弹簧动画将接管以将值捕捉到 min

glide({ min: -100 })

max

glide 动画的最大边界。如果动画值超出此边界,则弹簧动画将接管以将值捕捉到 max

glide({ max: 100 })

bounceStiffness

默认值: 100

如果动画超出 min/max 定义的边界,则弹簧的吸引力。值越高,运动越快、越锐利。

glide({ min: 100, bounceStiffness: 500 })

bounceDamping

默认值: 10

弹簧的阻力。值越高,弹簧的弹性越小。

glide({ max: 100, bounceDamping: 30 })

局限性

目前 spring 缓动存在一些局限性。

持续时间

damping: 0 的弹簧可以持续无限长的时间,但 Web Animations API 需要有限的 duration。因此,弹簧目前的上限为 10 秒(对于绝大多数 UI 动画来说,这已经足够长了)。
相对于 stiffness 增加 damping 以减少动画的持续时间。

时间线关键帧

springtimeline 中受支持,但独立的变换必须使用开始和结束关键帧定义:{ x: [0, 100] }

无硬件加速

spring 仅适用于独立的变换,这些变换在浏览器中尚未进行硬件加速。

保持关注

订阅最新资讯和更新。

©2025 Motion Division Ltd.
保持关注

订阅最新资讯和更新。

©2025 Motion Division Ltd.