美文网首页
svg实现环形进度条

svg实现环形进度条

作者: 果汁密码 | 来源:发表于2021-01-20 15:57 被阅读0次

先看效果图 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://www.haomeiwen.com/subject/rnukzktx.html