使用Svg实现环状进度条,以及加载动画

909 阅读1分钟

记录一下简单的圆形进度条实现,额,上次我做过了,然后又忘记了,所以这次就记录一下吧。

其实也可以使用纯CSS来实现,但是会很复杂,左边一个半圆右边一个半圆,还有一个遮罩。实在是太复杂了,不太适合成年人工作使用。

所以就简单的用一下svg,我没有写百分比那些无关的东西,具体进度指定stroke-dashoffset的值即可。

接下来直接上代码:

具体就是2个svg属性:

- stroke-dasharray 
- stroke-dashoffset

stroke-dasharray可以传一个数字,也可以传多个数字(所以这个属性名叫做array),用来控制虚线的长度和间距。

比如stroke-dasharray='5,5',表示虚线的长度是5,间距也是5。

stroke-dasharray='5,10',则间距是10。 具体详见mdn。

image.png

在这里我把stroke-dasharray,设置为了314。因为我设置的viewbox是100 100,且我把这个圆圈的直径设置为了100(半径 48*2+边宽stroke-width 4),所以圆形边长就是314,stoke-dasharray刚好和圆形的周长相等,完全覆盖圆圈的线条。

stroke-dashoffset属性指定了 dash 模式到路径开始的距离,所以如果是0,就是完全显示,314就是完全不显示。

总之,这两个属性的巧妙使用,就省去了用svg中比较复杂的path元素来绘制。