svg实现环形进度条

先看效果图 25%的环形进度


image.png

利用 SVG circle 实现环形进度条

1.cxcy 属性定义圆点的 x 和 y 坐标
2.r 属性定义圆的半径
3.stroke-width属性指定了圆的轮廓宽度
4.stroke-dasharray用于创建虚线,之所以后面跟的是array的,是因为值其实是数组,一个参数时: 其实是表示虚线长度和每段虚线之间的间距,两个参数或者多个参数时:一个表示长度,一个表示间距
如:stroke-dasharray = '10' 表示:虚线长10,间距10,然后重复 虚线长10,间距10
如:stroke-dasharray = '10, 5' 表示:虚线长10,间距5,然后重复 虚线长10,间距5
如:stroke-dasharray = '20, 10, 5' 表示:虚线长20,间距10,虚线长5,接着是间距20,虚线10,间距5,之后开始如此循环

实现思路就是:
1:一个circle当做背景圆
1:另外一个圆设置进度stroke-dasharray虚线长度等于或者小于当前圆的周长

circle.gif
<svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" viewBox="0 0 50 50">
        <circle fill="transparent" class="pie-bg" stroke-width="1" cx="25" cy="25" r="20"></circle>
        <circle fill="transparent" class="pie-bar" stroke-width="1" cx="25" cy="25" r="20"
            style="stroke-dasharray: 12.5664, 125.664;"></circle>
</svg>
        svg {
            vertical-align: middle;
            width: 150px;
            height: 150px;
        }

        .pie-bg {
            stroke: #ff3300;
            opacity: .3;
        }

        .pie-bar {
            stroke: #ff3300;
        }

        circle {
            stroke-dashoffset: 0;
            transform: rotate(-90deg);
            transform-origin: center;
            transition: all .2s;
            stroke: currentColor;
            z-index: 2;
        }

js动态控制进度

        var pieBar = document.querySelector('.pie-bar');
        var pathLen = 40 * Math.PI;//圆的周长
        var percent = 25;//占百分比
        pieBar.style.strokeDasharray = pathLen * percent / 100 + " " + pathLen;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 要实现的效果图如下 svg 语法学习 可以参考https://developer.mozilla.org/zh-C...
    冰落寞成阅读 2,019评论 0 1
  • 最近在开发的时候遇到了一个环形进度条的需求,设计师希望这个进度条是渐变色的,并且能有对应的动画。具体效果如图 下面...
    aboyl阅读 4,298评论 0 14
  • 在生活中比较常见的是直线进度条,但是圆形进度条的实现相对有意思,我个人总结了两种圆形进度条的实现方式。 svg实现...
    xurna阅读 2,324评论 0 1
  • 关于专题【vue开发音乐App】 本篇介绍底部快捷控件的环形进度条的实现方法:通过svg绘制两个环,线条模糊的环作...
    大海爱奔跑阅读 864评论 0 0
  • 本文只要描述利用svg circle标签的实现方法 知识点准备(摘自阮一峰老师的网络日志)1. 标签SVG 代码都...
    兮木兮木阅读 4,312评论 0 4