跳到内容

d3-ease

示例 · 缓动是一种扭曲时间的方法,用于在动画中控制明显的运动。它最常用于慢进慢出。通过缓动时间,动画过渡更加平滑,并表现出更合理的运动。

此模块中的缓动类型实现 ease 方法,它接受一个归一化的时间 t 并返回相应的“缓动”时间 。归一化时间和缓动时间通常在 [0,1] 范围内,其中 0 表示动画的开始,1 表示动画的结束;一些缓动类型,例如 easeElastic,可能会返回此范围之外的缓动时间。良好的缓动类型应在 t = 0 时返回 0,在 t = 1 时返回 1。

这些缓动类型主要基于 Robert Penner 的工作。

ease(t)

给定指定的归一化时间 t,通常在 [0,1] 范围内,返回“缓动”时间 ,通常也在 [0,1] 范围内。0 表示动画的开始,1 表示动画的结束。良好的实现应在 t = 0 时返回 0,在 t = 1 时返回 1。例如,要应用 easeCubic 缓动

js
const te = d3.easeCubic(t);

要应用自定义 弹性 缓动,请在动画开始前创建缓动函数

js
const ease = d3.easeElastic.period(0.4);

然后在动画期间应用缓动函数

js
const te = ease(t);

另请参阅 transition.ease.

easeLinear

源代码 · 线性缓动;恒等函数;linear(t) 返回 t

easePoly

源代码 · easePolyInOut 的别名。

easePolyIn

多项式缓动;将 t 提高到指定的 指数。如果未指定指数,则默认为 3,等效于 easeCubicIn

easePolyOut

反向多项式缓动;等效于 1 - easePolyIn(1 - t)。如果未指定指数,则默认为 3,等效于 easeCubicOut

easePolyInOut

对称多项式缓动;对 0–0.5 范围内的 t 进行 easePolyIn 缩放,对 0.5–1 范围内的 t 进行 easePolyOut 缩放。如果未指定指数,则默认为 3,等效于 easeCubic

easePoly.exponent(e)

返回一个新的多项式缓动,具有指定的指数 e。例如,要创建 easeLineareaseQuadeaseCubic 的等效项

js
const linear = d3.easePoly.exponent(1);
const quad = d3.easePoly.exponent(2);
const cubic = d3.easePoly.exponent(3);

easeQuad

源代码 · easeQuadInOut 的别名。

easeQuadIn

二次缓动;等效于 easePolyIn.exponent(2)。

easeQuadOut

反向二次缓动;等效于 1 - easeQuadIn(1 - t)。也等效于 easePolyOut.exponent(2)。

easeQuadInOut

对称二次缓动;对 0–0.5 范围内的 t 进行 easeQuadIn 缩放,对 0.5–1 范围内的 t 进行 easeQuadOut 缩放。也等效于 easePoly.exponent(2)。

easeCubic

源代码 · easeCubicInOut 的别名。

easeCubicIn

三次缓动;等效于 easePolyIn.exponent(3)。

easeCubicOut

反向三次缓动;等效于 1 - easeCubicIn(1 - t)。也等效于 easePolyOut.exponent(3)。

easeCubicInOut

对称三次缓动;对 0–0.5 范围内的 t 进行 easeCubicIn 缩放,对 0.5–1 范围内的 t 进行 easeCubicOut 缩放。也等效于 easePoly.exponent(3)。

easeSin

源代码 · easeSinInOut 的别名。

easeSinIn

正弦缓动;返回 sin(t)。

easeSinOut

反向正弦缓动;等效于 1 - easeSinIn(1 - t)。

easeSinInOut

对称正弦缓动;对 0–0.5 范围内的 t 进行 easeSinIn 缩放,对 0.5–1 范围内的 t 进行 easeSinOut 缩放。

easeExp

源代码 · easeExpInOut 的别名。

easeExpIn

指数缓动;将 2 提高到 10 × (t - 1) 的指数。

easeExpOut

反向指数缓动;等效于 1 - easeExpIn(1 - t)。

easeExpInOut

对称指数缓动;对 0–0.5 范围内的 t 进行 easeExpIn 缩放,对 0.5–1 范围内的 t 进行 easeExpOut 缩放。

easeCircle

源代码 · easeCircleInOut 的别名。

easeCircleIn

圆形缓动。

easeCircleOut

反向圆形缓动;等效于 1 - easeCircleIn(1 - t)。

easeCircleInOut

对称圆形缓动;对 0–0.5 范围内的 t 进行 easeCircleIn 缩放,对 0.5–1 范围内的 t 进行 easeCircleOut 缩放。

easeElastic

源代码 · easeElasticOut 的别名。

easeElasticIn

弹性缓动,就像橡皮筋一样。振荡的 振幅周期 可配置;如果未指定,则分别默认为 1 和 0.3。

easeElasticOut

反向弹性缓动;等效于 1 - elasticIn(1 - t)。

easeElasticInOut

对称弹性缓动;将 elasticIn 缩放至 t 在 0–0.5 之间,将 elasticOut 缩放至 t 在 0.5–1 之间。

easeElastic.amplitude(a)

返回一个具有指定振幅 a 的新弹性缓动。振幅 a 必须大于或等于 1。

easeElastic.period(p)

返回一个具有指定周期 p 的新弹性缓动。

easeBack

源代码 · easeBackInOut 的别名。

easeBackIn

类似于舞者在跳离地面之前弯曲膝盖的 预备动作 缓动。 过度 的程度是可以配置的;如果未指定,则默认值为 1.70158。

easeBackOut

反向预备动作缓动;等效于 1 - easeBackIn(1 - t)。

easeBackInOut

对称预备动作缓动;将 easeBackIn 缩放至 t 在 0–0.5 之间,将 easeBackOut 缩放至 t 在 0.5–1 之间。

easeBack.overshoot(s)

返回一个具有指定过度 s 的新回弹缓动。

easeBounce

源代码 · easeBounceOut 的别名。

弹跳缓动,如橡胶球。

easeBounceIn

easeBounceOut

反向弹跳缓动;等效于 1 - easeBounceIn(1 - t)。

easeBounceInOut

对称弹跳缓动;将 easeBounceIn 缩放至 t 在 0–0.5 之间,将 easeBounceOut 缩放至 t 在 0.5–1 之间。