代码之家  ›  专栏  ›  技术社区  ›  kazou

圆形边框进度条[重复]

  •  2
  • kazou  · 技术社区  · 7 年前

    我如何用CSS创建这个循环进度条?它是否可能(兼容IE10+、FF、chrome、safari…)?
    我认为我们可以使用SVG来实现这一点,但我不知道如何实现。

    在圆的周围,有一个根据进度百分比动态变化的小边框或阴影。如果百分比为100%,则边框将完全围绕填充进度条的圆。

    circle progress bar with a border to show progress

    2 回复  |  直到 7 年前
        1
  •  3
  •   web-tiki    4 年前

    圆形进度条 is由该答案改编: circular progress bar

    它使用SVG和Snap。svg为计数器设置蓝色笔划和JS的动画:

    Circle progress bar

    var count = $(('#count'));
    $({ Counter: 0 }).animate({ Counter: count.text() }, {
      duration: 5000,
      easing: 'linear',
      step: function () {
        count.text(Math.ceil(this.Counter)+ "%");
      }
    });
    
    var s = Snap('#animated');
    var progress = s.select('#progress');
    
    progress.attr({strokeDasharray: '0, 251.2'});
    Snap.animate(0,251.2, function( value ) {
        progress.attr({ 'stroke-dasharray':value+',251.2'});
    }, 5000);
    body{text-align:center;font-family:sans-serif;background:#080808;}
    svg{width:25%;}
    <script src="https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.3.0/snap.svg-min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <svg id="animated" viewbox="0 0 100 100">
      <path id="progress" stroke-width="3" stroke="#4596AB" fill="none"
            d="M50 10
               a 40 40 0 0 1 0 80
               a 40 40 0 0 1 0 -80">
      </path>
      <circle cx="50" cy="50" r="38" fill="transparent" stroke="#fff" stroke-width="1"/>
      <text id="count" x="50" y="50" fill="#fff" text-anchor="middle" dy="7" font-size="20">100%</text>
    </svg>
        2
  •  -1
  •   mickaelw    7 年前

    我认为该网站: https://medium.com/@andsens/radial-progress-indicator-using-css-a917b80c43f9#.2fflbvwrt 能帮你吗

    您可以在此处查看演示: http://jsfiddle.net/andsens/Yns9P/ 在这一行:

    window.randomize = function() {
        $('.radial-progress').attr('data-progress', Math.floor(Math.random() * 100));
    }
    

    你可以改变 attr('data-progress', Math.floor(Math.random() * 100)) attr('data-progress', [your_pourcentage])