前端学习记录

使用svg画弧线的简易方法

2019-07-10  本文已影响0人  无言以越

今天有一个需求需要根据进程画百分比弧度,一搜索度娘清一色的path路径,我知道path是万能的但是那些点的坐标计算实在是难为我了,于是根据现有的api想到了一种取巧的办法实现,实现的效果如下

这个方法一样是用到了svg元素  但不是非常灵活的path(越灵活的东西功能越强大,但使用其实越麻烦,就比如transform的translate,rotate,scale,三种方法其实最后都是计算除了偏移矩阵,矩阵也是万能的)  而是使用的具有一定封装好的属性的circle,Dom结构如下:

如circle的类型所述 第一个circle是背景,第二个circle为高亮部分

我们用到了2个核心属性来完成这一工作stroke-dasharray与stroke-dashoffset    

stroke-dasharray是虚线描点之间的距离  但假如足够大的话,当间隔大于圆的周长的时候 我们可以使其只有一个虚点,因为一个虚点就大于了整个圆的长度。

stroke-dashoffset是一个与中心角度挂钩的属性,可以理解为需要显示部分的反向值,它的值+需要高亮部分的长度 === 圆的周长

所以给这个2个值赋值

之所以获取HTML的fontSize是因为我定义的长度单位是rem  为了自适应分辨率

最后用css给circle填充颜色

PS:circle的起始点并不在12点钟的方向,而是在3点方向  所以需要Z轴旋转-90deg使其起始点对准12点方向。

上一篇下一篇

猜你喜欢

热点阅读