我转换到像这样的对象
.transition()
.duration(600)
.delay(function(d, i) { return (500 - (i * 40)); })
.ease(d3.easeBackInOut)
在文档中有不同的参数可能操纵缓和类型,如backInOut(t, 3.0)
但我不知道如何应用t
和不同的幅度...任何帮助吗?
在d3.easeBackInOut
的特定情况下,您可以使用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,自动传递给缓动函数。