首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

纯css实现环形进度条

  • 24-12-16 12:04
  • 2266
  • 14016
juejin.cn

文章在个人博客发布:纯css实现环形进度条

先看效果

这个环形进度条使用纯css制作,使用css变量控制进度,你可以打开开发者工具选中它改变它内联的css变量--progress: 60,进度和内容均会发生变化。

CSS变量

CSS变量是css3引入的新特性,它允许你定义一个变量。你可以通过--变量名来定义一个css变量,通过var(--变量名)来使用它。 下边这个小demo展示了如何使用css变量。你可以打开开发者工具摆弄一下。

我的颜色由css变量控制
.demo-var{ color: var(--color); }
html
复制代码
<div class="demo-var" style="--color:red"> 我的颜色由css变量控制 div> <style> .demo-var{ /* 在此处使用color */ color: var(--color); } style>

我们此处使用了一个小技巧。通过css计数器来显示css变量,环形中间的数字就是这样显示的,你可以打开开发者工具摆弄一下下边的小demo。

image.png

html
复制代码
<div class="demo-var" style="--num:100">div> <style> .demo-num::after{ /* 将num计数器重置为你设置的css变量 */ counter-reset: num var(--num); /* 再使用计数器,就变相显示了它,不过这种方法只能显示数字 */ content: 'num的值是:'counter(num); } style>

锥型渐变

使用锥型渐变可以产生一个披萨形状,这是我们环形进度条的关键。

image.png

html
复制代码
<div class="demo-conic" style="--progress:60">div> <style> .demo-conic{ margin: auto; position: relative; width: 200px; height: 200px; border-radius: 50%; /* 在此处使用css变量,通过calc(var(--progress) * 1%)将其转化为百分比 */ background: conic-gradient( #99e6ff 0%,#99e6ff calc(var(--progress) * 1%),transparent 0%); } style>

接下来要做的就很简单了,我们使用一个白色的圆来覆盖锥型渐变,再通过前边说的小技巧显示进度数字,这样我们就可以得到一个环形进度条了。

完整代码

html
复制代码
<div class="demo-process" style="--progress: 60"> <div class="demo-process-inner">div> div> <style> .demo-process{ margin: auto; position: relative; width: 200px; height: 200px; border-radius: 50%; padding: 16px; /* 用css变量产生一个披萨形 */ background: conic-gradient( #99e6ff 0%,#99e6ff calc(var(--progress) * 1%),transparent 0%); } .demo-process::after{ /* 我们弄一个小圆来美化进度条 */ content: ''; position: absolute; left: calc(50% - 10px); top: calc(50% - 10px); width: 16px; height: 16px; border-radius: 50%; /* 通过css变量控制小圆的位置,使他跟随进度 */ transform: rotate(calc(3.6deg * var(--progress))) translateY(-92px); /* background: white; 此处css变量是为了适配夜间模式,你直接使用白色即可*/ background: var(--card-background); border: 4px solid #99e6ff;; } .demo-process::before{ /* 此处也是用于美化进度条 */ content: ''; position: absolute; left: calc(50% - 8px); top: 0; width: 16px; height: 16px; border-radius: 50%; background: #99e6ff; } .demo-process-inner{ /* 内部的用于遮住披萨的圆 */ width: 100%; height: 100%; border-radius: 50%; display: flex; justify-content: center; align-items: center; /* background: white; 此处也是为了适配夜间模式,你直接使用白色即可*/ background: var(--card-background); } .demo-process-inner::before{ /* 显示进度的数字 */ counter-reset: process var(--progress); content: counter(process)'%'; font-size: 30px; color: #99e6ff; } style>

相关知识

css变量
锥型渐变
css计数器

注:本文转载自juejin.cn的粥粥粥菌的文章"https://juejin.cn/post/7448299485314023439"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

104
前端
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top