纯css轻松实现环形进度条

我们在工作中用到环形进度条的时候,一般都是使用组件库提供的,那么你有没有想过这是怎么实现的呢?

你可能很容易会想到使用canvasctx.arc()方法画一个圆弧来实现,并且以上展示的**「antd」 「element」**环形进度条,也是使用的svg实现的。

其实有更简单的办法,今天我们使用**「纯css」**实现一个环形进度条,那就是使用css函数conic-gradient()

CSS 函数 conic-gradient() 创建一个由**「渐变」**组成的图像,渐变的颜色围绕一个中心点旋转(而不是从中心辐射)进行过渡。 ------来自MDN

从demo我们可以看到右边所展示的图像是由左边代码中所声明的6种**「不同颜色」「不同角度」**逆时针旋转组成的,当我设置圆角后,看上去就像一个饼图。

「那么如果我只给两个颜色,会是什么样子呢?」

可以看到,其实这里也是可以直接使用百分比的。

看到这里你或许明白我要做什么了,对,再加一个小一点的元素覆盖上去,环形进度条不就有了吗!

这时候你可能会说,你这都写死的,那我用变量传进来不就行了:

好了,大功告成,是不是很简单!并且这个conic-gradient()浏览器兼容性也不错。

最后奉上全部代码:

html 复制代码
<div 
     class="progress" 
     style="--progress: 80%; --last: 20%;" 
     data-progress="80%"
>
</div>
css 复制代码
body {
 padding: 20px;
}
.progress {
 width: 200px;
 height: 200px;
 background: conic-gradient(
      green var(--progress), 
      #f1f1f1 var(--last)
    );
 border-radius: 50%;
 position: relative;
 &::before {
  content: attr(data-progress);
  position: absolute;
  inset: 10px;
  background-color: #fff;
  width: 180px;
  height: 180px;
  text-align: center;
  line-height: 180px;
  border-radius: 50%;
 }
}
相关推荐
用户059540174461 天前
大模型长上下文遗忘排查实录:用 Playwright 自动化测试,揪出了 90% 的存储序列化 bug
前端·css
天蓝色的鱼鱼2 天前
关于 CSS 你可能不知道的属性,但关键时刻很有用
前端·css
用户059540174462 天前
向量库静默丢数据踩坑实录:Playwright 端到端测试让我排查了72小时
前端·css
ZhengEnCi3 天前
Q06-导航按钮高级拟态玻璃效果构建完全指南
前端·css
用户059540174463 天前
Redis持久化踩坑实录:这个数据丢失Bug让我排查了6小时
前端·css
用户059540174464 天前
Redis记忆存储故障恢复测试踩坑实录:手动测试让我漏掉了2个一致性Bug
前端·css
用户059540174464 天前
用了3年Mock,才发现Redis记忆存储的测试一直漏掉了60%的边界场景
前端·css
用户059540174465 天前
用了6个月LangChain,才发现AI Agent的记忆存储一直有坑——写了23个Pytest用例才彻底修好
前端·css
用户059540174465 天前
把LLM记忆测试从手工脚本换成Pytest参数化,回归时间从2小时降到10分钟
前端·css
用户059540174466 天前
Redis缓存一致性踩坑实录:线上故障排查6小时,我用pytest+内存快照把它永久关进了笼子
前端·css