css3 进度圈-纯SVG实现进度圈

ProgressCircles 是经典的仪表板元素,可将统计数据直观地解释为摘要视图。 我们可以通过Java和Canvas进行渲染,然后配合CSS、图片或者借助SVG实现一个进度圈。

用SVG实现进度圈并没有想象中那么困难css3 进度圈,让我们从基础开始:

创建背景

首先,创建一个直径为90px的矩形,然后使用cx,cy设置SVG元素的中心位置。 我还在这里添加了一些样式属性,例如 3px 的白色轮廓。

css3 进度圈_进度圈为什么不会转动呢_进度圈圈

添加进度条

现在我们需要在昨天的背景中添加另一个进度方块:

好了,现在我们已经画出了两个必要的圆圈。 可以想象,100%可以用一个全红色的方块来表示,而如果我想表示一个特定的比例怎么办?

笔画破折号数组和笔划破折号偏移

css3 进度圈_进度圈为什么不会转动呢_进度圈圈

然后你需要编写CSS。 SVG提供了两个属性,Stroke-DashArray和Stroke-DashOffset,可以使昨天矩形的轮廓变成实线。 如果两个属性都设置为100px,会有以下效果

#progress{笔画-dasharray:100px;笔画-dashoffset:100px;}

之后,我们可以使用@keyframe为其添加一些动画:

css3 进度圈_进度圈为什么不会转动呢_进度圈圈

实现特定比例的表示

至此,动画效果、进度圈、背景圈就已经完成了。 最后的工作是用strike-dashoffset来表达给定的比例,这可能会涉及到物理的知识。

这里我们使用Sass来完成这个工作。 其实Java和CSSDOM结合起来也能达到我们想要的效果(可以处理浮点数)。

进度圈为什么不会转动呢_进度圈圈_css3 进度圈

首先我们设置一些需要用到的变量css3 进度圈,$radius(圆的直径)、percent(要显示的比例)、$circumference(圆的边长)。

取出来,加上$circumference即可计算出strike-dashoffset的值。

如果你尝试运行这个反例,你会发现圆圈的进度条将从 3 点钟开始。 为了解决这个问题,我们需要将整个SVG逆时针旋转90°

结束

这里我补充了一些其他的疗效,这在一定程度上会涉及到一些物理知识。

进度圈圈_进度圈为什么不会转动呢_css3 进度圈

如果有任何疑问,可以在文章下方留言。 另外,在上面的例子的基础上,使用了一些Java代码来处理进度条比例的效果。

本文是根据《》翻译而来,整个译文包含了我们自己的理解和思考。 如果翻译的不好或者有错误的地方,请各位同仁不吝赐教。 如果要转载此译文,必须注明中文来源:。

文章涉及图片和代码。 如果显示不完整给您带来不好的阅读体验,请点击文章顶部阅读全文。 如果您认为本站内容对您的工作或学习有帮助,请关注本公众号。

W3cplus.com

————————————

后端描述这些东西,推动web前沿