如何在SVG中以顺时针方式为饼图onLoad设置动画

时间:2014-04-04 13:08:07

标签: svg pie-chart snap.svg svg-animate

我被困在饼图上,它应该在顺时针方向上加载动画。在这里,是我的pie chart fiddle

我需要这个动画来处理brezier曲线路径,例如,

<path d="M 276 63.03 C 329.93 63.03 381.86 78.24 421.4 105.63 L 276 222.79 M 276 63.03" />

我也知道,可以使用snap.svg库实现,但在这种情况下无法进行锻炼。

感谢任何帮助。

提前致谢!

1 个答案:

答案 0 :(得分:1)

您可以使用嵌套的animate并使用渐进式延迟更改某些属性。

在此示例中,我将笔划g放置在每个切片的填充g内,并在其中添加了animate元素,每个动画从0.5开始。我为opacity属性设置了动画(因此我为每个元素添加了opacity="0"属性;您可以将其替换为另一个属性)。这是第二个片段:

<g id="pieFillSection2" opacity="0" style="fill: yellow;fill-opacity: 1.0; stroke: none" transform="matrix(1,0,0,1,0,0)" >
    <animate attributeName="opacity" from="0" to="1"
             begin="0.5s" dur="1s" fill="freeze"/>
    <path d="M 421.4 105.63 C 483.64 148.74 505.87 215.26 478.05 275.16 C 450.23 335.05 377.64 377 293.04 382.05 L 276 222.79 M 421.4 105.63" />
    <g class="pieStroke" id="pieStrokeSection2" style="stroke-width: 1.0;stroke: rgb(128,128,128);stroke-opacity: 1.0; fill: none" transform="matrix(1,0,0,1,0,0)" >
        <path d="M 421.4 105.63 C 483.64 148.74 505.87 215.26 478.05 275.16 C 450.23 335.05 377.64 377 293.04 382.05 L 276 222.79 M 421.4 105.63" />
    </g>
</g>

检查更新后的JSFiddle