gpt4 book ai didi

javascript - 简单路径过渡

转载 作者:数据小太阳 更新时间:2023-10-29 05:48:30 25 4
gpt4 key购买 nike

我正在尝试实现一个简单的路径转换,如图所示 here .我既不是 javascript 也不是 d3 魔术师,所以我尽力做到最好:

var line = d3.svg.line()
.x(function(d) { return x(d.date); })
.y(function(d) { return y(d.price); });

svg.append("path")
.datum(data)
.attr("class", "line")
.attr("d", line)
.transition().duration(next.duration||1000).delay(next.delay||0); # not right

如何让转换正常工作?

最佳答案

在 d3 中绘制路径动画的一种方法是使用 dash-array 和 dash-offset 属性。

你可以做的是将 dashoffset 设置为总路径长度,然后随着时间的推移减小 dashoffset 直到它为零。这将模拟正在绘制的路径。查看 stroke-dasharray 上的 SVG 文档和 stroke-dashoffset .

从概念上讲,您正在做的是:

假设您的行长为 4 个单位 (----)。您将 dasharray 设置为 (----,,,,) 即四个单位,然后是四个空格。您将 dashoffset 设置为 4 个单位,因此该线将位于可见空间左侧 4 个单位。然后,当您将 dashoffset 减小到 0 时,该线将看起来像 (-,,,,),然后是 (--,,,,) 等等,直到画出整条线。

var line = d3.svg.line()
.x(function(d) { return x(d.date); })
.y(function(d) { return y(d.price); });

var path = svg.append("path")
.attr("d", line(data))
.classed("line", true);

var pathLength= path.node().getTotalLength();

path
.attr("stroke-dasharray", pathLength + " " + pathLength)
.attr("stroke-dashoffset", pathLength)
.transition()
.duration(2000)
.ease("linear")
.attr("stroke-dashoffset", 0);

-

学习自Duopixel's发布here .

关于javascript - 简单路径过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13408144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com