如何将单个参数应用于过渡中的宽松?

时间:2019-03-04 12:03:39

标签: javascript d3.js transition easing

我过渡到类似对象

.transition()
.duration(600)
.delay(function(d, i) { return (500 - (i * 40)); })
.ease(d3.easeBackInOut)

在文档中,可以使用诸如backInOut(t, 3.0)之类的不同参数来操纵缓动类型,但我不知道如何应用t和不同的幅度... 有什么帮助吗?

https://github.com/d3/d3-ease#easeBackInOut

1 个答案:

答案 0 :(得分:2)

d3.easeBackInOut的特定情况下,您可以使用overshoot()来设置振幅(在API中称为 overshoot ):

.ease(d3.easeBackInOut.overshoot(s))
//your value here----------------^ 

以下是使用3作为过冲的演示(默认值为1.70158):

const svg = d3.select("svg");
svg.append("circle")
  .attr("cx", 100)
  .attr("cy", 50)
  .attr("r", 10)
  .style("stroke", "black")
  .style("fill", "lightgray")
  .transition()
  .duration(2000)
  .ease(d3.easeBackInOut.overshoot(3))
  .attr("cx", 400);
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
<svg width="500" height="100"></svg>

顺便说一句,您无需弄乱t。它的值从0到1,将自动传递到缓动函数。