D3 transition
过渡(excessive
),主要用于进行视觉效果的交互,让原有生动的数据变得更加活跃,通常在前端图标中较为应用,而其学术图标仅针对静态数据的展示效果。
transition
在 d3 中创建过度主要需要通过d3.transition
以及 selection.transition
,他们都可以返回一个过度的效果,他们两个的区别在于d3.transtion
主要用于直接创建一个对象,然后在指定一个作用对象,而selection.transtion
是通过作用对象创建过渡,简单的就是一个是选择集对象,而另一个就是过度对象:
ID | DA | FA |
---|---|---|
d3.transition([选择],[名称]) | 创建一个过度对象 | |
transition.delay([延迟]) | 设置一个过度的延迟时间,单位是ms (默认的延迟时间为 0ms ) |
|
transtion.duration([持续时间]) | 设置过度的持续时间,单位是ms (默认的持续时间为250ms ) |
|
transtion.ease() | 创建一个过度的样式 | |
linear | 线性缓动 | |
polynomial | 多项式缓动 | |
quadratic | 二次缓动 | |
cubic | 三次缓动 | |
sinusoidal | 正弦缓动 | |
exponential | 指数缓动 | |
back | 回缩后冲击终点 | |
circular | 环形缓动 | |
circular | 缓动效果 | |
elastic | 震荡缓动,就像是类似于震荡的橡皮筋一样 | |
bounce | 弹跳缓动,像是一个橡皮球一样 |
创建
d3.transition
在下述的 code 中我们主要使用d3.transtion
方法来进行添加一个过渡效果,通过使用过渡效果可以将宽度为100
的矩形过渡为宽度500
且效果非常的丝滑。
1 | var padding = { |
selection.transition
在上图中,我们通过使用selection.transtion
即选择集对象来实现过渡的delay、duration、ease
即延迟、持续时间以及震荡过渡样式等效果的实现,需要注意的是 transition可以被多次的调用。
1 | var padding = { |
属性
通常为了满足部分开发者的变态心里,D3 为此提供了图表的过度属性,主要有两个,分别我为transition.attr
以及transition.attrTween
两个过度效果,通常transition.attr
最为常用,而transition.attrTween
则是可以手动设置插值函数,虽然他属性变化的中间值是默认插值函数计算,但通过使用transition.attrTween
则可以手动设置插值函数:
ID | DA | FA |
---|---|---|
transition.attr(name,value) | 将属性name 过度到目标值 |
|
transition.attrTween(name,tween) | 将name 使用插值函数tween 进行过度 |
|
linear-in |
按照正方向运动 | |
linear-out |
按照反向运动 | |
linear-in-out |
前半段用正方向 运动,后半段有那个反方向 运动 |
|
linear-out-in |
前半段用反方向 运动,后半段用正方向 运动 (除了linear 过渡样式可用之外,也可以用于其他的过渡样式) |
transition.attr
在下述的 code 中,我们通过使用selection.transtion
即选择集对象来实现过渡的delay、duration、ease
即延迟、持续时间以及震荡过渡样式等效果的实现。
1 | var padding = { |
transition.attrTween
1 | /* 基本 svg 数据 */ |
在上述 code 中 :
1 | .attrTween("width", |
其中我们使用了attrTween
来手动设置中间值默认的插值函数,function (d,i,a
分别代表数据、索引、属性等三种信息,其中a
是width
是一个初始值。而return function(t)
所返回的t
则是插值函数,他的范围是0,1
,分别代表了开始、结束,所以当t
处于0
时,function(t)
返回100
,但是当t
返回1
时,function(t)
将会返回500
来表述过渡结束。
axis
1 | /* 基本 svg 样式 */ |