头闻号

广州市特峰化工有限公司

氧化物|无机酸|无机碱|烃类|表面活性剂|羧酸

首页 > 新闻中心 > 科技常识:SVG弧形进度环实现
科技常识:SVG弧形进度环实现
发布时间:2024-11-27 04:14:44        浏览次数:4        返回列表

今天小编跟大家讲解下有关SVG弧形进度环实现 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了有关SVG弧形进度环实现 的相关资料,希望小伙伴们看了有所帮助。

最近做的一个页面,有个类进度的圆弧环UI,以前实现过圆环进度条,这次复习了一下,还学习到了一些细节点。

自从用了svg之后,发现其实稍微复杂点的UI,用SVG玩还挺简单的。

我们可以这么分解svg:一个底色的圆弧和一个同线宽的实色圆弧

那么怎么实现圆弧呢?先要了解svg能怎么实现的这个问题,svg的哪些元素能实现?

圆弧可以用path来实现

具体一点就是用path的弧形命令A:

Arx ry x-axis-rotation large-arc-flag sweep-flag x y

A命令可以画椭圆和圆形,rx ry分别表示两个轴的半径,x-axis-rotatio表示x轴的旋转情况,我这里的圆弧是正置的,所以值设为0即可。large-arc-flag表示圆弧是否大弧度,而sweep-flag表示起点到终点的方向是逆时针还是顺时针,这两个值的解释,在mdn有详细说明和图文解释了,这里就不多说,这里实现的话,基本就是大弧度和顺时针,最后两个值表示终点坐标。(起点坐标是A命令前的M命令来写明)

确定了弧线的基本实现之后,就是确认数据的问题了:半径和起点、终点坐标,这里要用到一点点数学几何知识。

半径是明确的,起点和终点坐标就要一轮计算了。本来想在线上画的,发现不知道有啥工具好画,算了,看我手工版灵魂画图:

以左上角为坐标原点,其实就不难基于弧度和半径计算起点和终点的坐标了。

一些细节点:弧线头不是长方边,可以用stroke-linecap="round"

代码都放codepen上了,可以直接查看实现:https://codepen.io/

原文:https://segmentfault.com/a/1190000022527834

来源:爱蒂网