html – SVG圈动画

前端之家收集整理的这篇文章主要介绍了html – SVG圈动画前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想制作一个圆圈动画,
我目前有这个: http://jsfiddle.net/gf327jxu/1/
  1. <svg width="100" height="100" class="circle">
  2. <circle cx="50" cy="50" r="40" />
  3. </svg>

CSS:

  1. .circle{
  2. stroke:green;
  3. stroke-width:10;
  4. fill:none;
  5. }

我希望它像一个圆形进展动画,像这样:http://jsfiddle.net/andsens/mLA7X/但在SVG,我需要顺时针,我怎么能实现这一点,这甚至可能吗?

解决方法

这是一个 fiddle example.

注意:我使用r = 57,因为周长是358.1,接近360度.对于不同的r值,您需要计算stroke-dasharray

非常感谢@Robert Longson,@ErikDahlström和@Phrogz多年来的SO解决方案.
这个小提琴只是他们的一个调整.

  1. (function() {
  2. // math trick 2*pi*57 = 358,must be less than 360 degree
  3. var circle = document.getElementById('green-halo');
  4. var myTimer = document.getElementById('myTimer');
  5. var interval = 30;
  6. var angle = 0;
  7. var angle_increment = 6;
  8.  
  9. window.timer = window.setInterval(function() {
  10. circle.setAttribute("stroke-dasharray",angle + ",20000");
  11. myTimer.innerHTML = parseInt(angle / 360 * 100) + '%';
  12.  
  13. if (angle >= 360) {
  14. window.clearInterval(window.timer);
  15. }
  16. angle += angle_increment;
  17. }.bind(this),interval);
  18. })()
  1. <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;">
  2. <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)" />
  3. <text id="myTimer" text-anchor="middle" x="100" y="110" style="font-size: 36px;" >0%</text>
  4. </svg>

猜你在找的HTML相关文章