我想制作一个圆圈动画,
我目前有这个: http://jsfiddle.net/gf327jxu/1/
我目前有这个: http://jsfiddle.net/gf327jxu/1/
- <svg width="100" height="100" class="circle">
- <circle cx="50" cy="50" r="40" />
- </svg>
CSS:
- .circle{
- stroke:green;
- stroke-width:10;
- fill:none;
- }
我希望它像一个圆形进展动画,像这样:http://jsfiddle.net/andsens/mLA7X/但在SVG,我需要顺时针,我怎么能实现这一点,这甚至可能吗?
解决方法
这是一个
fiddle example.
注意:我使用r = 57,因为周长是358.1,接近360度.对于不同的r值,您需要计算stroke-dasharray
非常感谢@Robert Longson,@ErikDahlström和@Phrogz多年来的SO解决方案.
这个小提琴只是他们的一个调整.
- (function() {
- // math trick 2*pi*57 = 358,must be less than 360 degree
- var circle = document.getElementById('green-halo');
- var myTimer = document.getElementById('myTimer');
- var interval = 30;
- var angle = 0;
- var angle_increment = 6;
- window.timer = window.setInterval(function() {
- circle.setAttribute("stroke-dasharray",angle + ",20000");
- myTimer.innerHTML = parseInt(angle / 360 * 100) + '%';
- if (angle >= 360) {
- window.clearInterval(window.timer);
- }
- angle += angle_increment;
- }.bind(this),interval);
- })()
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 0 300 300" preserveAspectRatio="none" style="width:300; height:300; top:0; left:0;">
- <circle cx="100" cy="100" r="57" id="green-halo" fill="none" stroke="#00CC33" stroke-width="15" stroke-dasharray="0,20000" transform="rotate(-90,100,100)" />
- <text id="myTimer" text-anchor="middle" x="100" y="110" style="font-size: 36px;" >0%</text>
- </svg>