gpt4 book ai didi

javascript - 使用 d3js 动画 SVG 路径

转载 作者:行者123 更新时间:2023-11-30 10:29:52 24 4
gpt4 key购买 nike

我使用标准 SVG 笔标记(“M 130 30”、“L 132、40”等)定义了一个非常复杂的路径。我如何使用此标记并创建路径,以便我可以按照此处所述慢慢绘制整个路径?:Can't make paths draw growing slowly with D3

最佳答案

duopixel's answer 中列出的方法在那个问题中,即使 <path> 仍然有效要设置动画的节点不是由 D3 生成的。这是 duopixel's code 的修改版本使用现有的 SVG 路径节点:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
</head>
<body>
<svg xmlns="http://www.w3.org/2000/svg" id="visualization" height="300" width="700">
<path id="existingLine" fill="none" stroke-width="2" stroke="steelblue"
d="M0,45.355864964297126Q56,93.30709264413157,70,101.42710214950955C91,113.60711640757651,119,112.60236634997189,140,126.5559600180769S189.00000000000003,192.28891292428457,210.00000000000003,194.45105993687628S259,143.07483109253366,280,140.97027343535498S329,190.98168538928422,350,180.42067555568514S399.00000000000006,58.614334097794526,420.00000000000006,70.56354121136098S469.00000000000006,240.5996349725512,490.00000000000006,260.08205631279486S539,201.70472761196623,560,200.44635014631868S609,277.9853193478483,630,251.69287320847783Q644,234.16457578223088,700,25.163375883849042">
</path>
</svg>
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script type="text/javascript">
// select the already-existing path node via its ID.
var path = d3.select("#existingLine");

// from here forward the code is exactly like the original....
var totalLength = path.node().getTotalLength();

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

</script>
</body>
</html>

或者,如果您确实想要使用 D3 来创建节点,只需使用您现有的路径字符串并使用它代替 line()函数调用。同样,调整 duopixel 的代码:

var path = svg.append("path")
.attr("d", "M 130 30", "L 132, 40") // and so on
.attr("stroke", "steelblue")
.attr("stroke-width", "2")
.attr("fill", "none");

关于javascript - 使用 d3js 动画 SVG 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17498830/

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