在D3中为曲线绘制设置动画

时间:2014-04-16 03:16:07

标签: javascript d3.js

我在d3中做了一个简单的贝塞尔曲线。 我想为曲线设置动画:起点到终点。我想动画需要1.25秒?

JSFiddle

HTML

<div id="myelement">  
</div>

JS:

var svg = d3.select('#myelement').append('svg'),
    curve = svg.append('path')
                 .attr('d', 'M0,200 C400,200 400,200 400,0')
                 .attr('stroke', '#fff')
                    .attr('fill-opacity', 0);

curve.transition()
       .attr('d', 'M0,200 C400,200 400,200 400,0')

1 个答案:

答案 0 :(得分:2)

这是我在回答另一个问题https://stackoverflow.com/a/13354478/151212时看到的一种很酷的曲线动画方式。根据您的情况,代码看起来如下所示:

var svg = d3.select('#myelement').append('svg'),
    curve = svg.append('path')
               .attr('d', 'M0,200 C400,200 400,200 400,0')
               .attr('stroke', '#000')
               .attr('fill-opacity', 0);

var length = curve.node().getTotalLength();

curve.attr("stroke-dasharray", length + " " + length)
     .attr("stroke-dashoffset", length)
     .transition()
       .duration(1250)
       .attr("stroke-dashoffset", 0);

JSFiddle