跳至内容

定时

过渡的缓动延迟持续时间都是可配置的。例如,可以使用每个元素的延迟来交错重新排序元素,从而改善感知。有关建议,请参阅统计数据图形中的动画过渡

transition.delay(value)

来源 · 为每个选定的元素,将过渡延迟设置为以毫秒为单位的指定value

js
transition.delay(250);

value可以指定为常量或函数。如果是函数,则会立即按顺序针对每个选定的元素对其进行评估,并传递当前数据 (d)、当前索引 (i) 和当前组 (nodes),其中this为当前 DOM 元素。然后使用函数的返回值来设置每个元素的过渡延迟。如果未指定延迟,则默认为零。

如果未指定value,则返回过渡中第一个(非空)元素的延迟的当前值。这通常仅在您知道过渡仅包含一个元素时有用。

js
transition.delay() // 250

将延迟设置为索引 i 的倍数是交错一组元素中的过渡的一种便捷方式。例如

js
transition.delay((d, i) => i * 10);

当然,您也可以将延迟计算为数据的函数,或在计算基于索引的延迟之前对选择进行排序

transition.duration(value)

来源 · 为每个选定的元素,将过渡持续时间设置为以毫秒为单位的指定value

js
transition.duration(750);

value可以指定为常量或函数。如果是函数,则会立即按顺序针对每个选定的元素对其进行评估,并传递当前数据 (d)、当前索引 (i) 和当前组 (nodes),其中this为当前 DOM 元素。然后使用函数的返回值来设置每个元素的过渡持续时间。如果未指定持续时间,则默认为 250 毫秒。

如果未指定value,则返回过渡中第一个(非空)元素的持续时间的当前值。这通常仅在您知道过渡仅包含一个元素时有用。

js
transition.duration() // 750

transition.ease(value)

来源 · 为所有选定的元素指定过渡的缓动函数

js
transition.ease(d3.easeCubic);

value必须指定为函数。缓动函数针对动画的每个帧进行调用,传递范围在 [0, 1] 内的归一化时间t;然后它必须返回缓动时间,它通常也位于范围 [0, 1] 内。一个好的缓动函数应该在t = 0 时返回 0,在t = 1 时返回 1。如果未指定缓动函数,则默认为easeCubic

如果未指定value,则返回过渡中第一个(非空)元素的当前缓动函数。这通常仅在您知道过渡仅包含一个元素时有用。

js
transition.ease() // d3.easeCubic

transition.easeVarying(factory)

示例 · 来源 · 为过渡的缓动函数指定一个工厂。

js
transition.easeVarying((d) => d3.easePolyIn.exponent(d.exponent));

factory必须是一个函数。它针对选择的每个节点进行调用,传递当前数据 (d)、当前索引 (i) 和当前组 (nodes),其中this为当前 DOM 元素。它必须返回一个缓动函数。