当前位置: 首页 > news >正文

CSS-SVG-环形进度条

在这里插入图片描述

线上代码地址

<div class="circular-progress-bar"><svg><circle class="circle-bg" /><circle class="circle-progress" style="stroke-dasharray: calc(2 * 3.1415 * var(--r) * (var(--percent) / 100)), 1000" /></svg>
</div><br />
<br />
<p><label>进度</label><input type="range" min="0" max="100" value="0" oninput="changeConfig(this, '--percent')" />
</p>
<p><label>环形大小</label><input type="range" min="100" max="400" value="200" oninput="changeConfig(this, '--size', 'px')" />
</p>
<p><label>进度条宽度</label><input type="range" min="1" max="50" value="10" oninput="changeConfig(this, '--progress-border', 'px')" />
</p>
<p><label>进度条颜色</label><input type="color" value="#ff0000" oninput="changeConfig(this, '--progress-color')" />
</p>
<p><label>背景色</label><input type="color" value="#cccccc" oninput="changeConfig(this, '--bg-color')" /><button onclick="changeDemo({ value: 'transparent' }, '--bg-color')">透明</button>
</p>
.circular-progress-bar {--size: 200px; /* 环形大小 */--percent: 0; /* 进度 */--progress-border: 10px; /* 进度条宽度:要带单位,不然计算半径的时候有问题,要和 --size 统一 */--progress-color: red; /* 进度条颜色 */--bg-color: green; /* 不是进度条的颜色 */position: relative;width: var(--size);height: var(--size);border-radius: 50%;
}
.circular-progress-bar::before {position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);counter-reset: progress var(--percent);/* 用于重置计数器的初始值,并且命名为progress */content: counter(progress) "%";white-space: nowrap;font-size: 18px;
}.circular-progress-bar svg {width: 100%;height: 100%;
}
.circular-progress-bar svg circle {--r: calc((var(--size) - var(--progress-border)) / 2);fill: none;stroke-width: var(--progress-border);stroke-linecap: round;stroke: var(--progress-color);transition: stroke-dasharray 0.3 linear;cx: calc(var(--size) / 2);cy: calc(var(--size) / 2);r: var(--r);
}
.circular-progress-bar svg .circle-bg {stroke: var(--bg-color);
}.circular-progress-bar svg .circle-progress {opacity: var(--percent); /* 进度:0 的时候不需要显示 */
}
const progressEl = document.querySelector('.circular-progress-bar');function changeConfig({ value }, property, unit = '') {progressEl.style.setProperty(property, value + unit);
}
http://www.lryc.cn/news/269234.html

相关文章:

  • 英语中修饰头发的形容词顺序是怎么样的(加补充)
  • python的WebSocket编程详解,案例群聊系统实现
  • flutter学习-day22-使用GestureDetector识别手势事件
  • uni-app tabbar组件
  • 【Midjourney】Midjourney根据prompt提示词生成人物图片
  • Oracle 拼接字符串
  • 探究公有云中的巨人:深入分析大数据产品的架构设计
  • 亚马逊云科技 re:Invent 2023 产品体验:亚马逊云科技产品应用实践 王炸产品 Amazon Q,你的 AI 助手
  • 并发编程大杀器,京东多线程编排工具asyncTool
  • 【开源项目】智慧交通~超经典开源项目实景三维数字孪生高速
  • udp多播/组播那些事
  • C++ Qt开发:SqlRelationalTable关联表组件
  • 【LeetCode】修炼之路-0001-Two Sum(两数之和)【python】【简单】
  • 秋招复习篇之代码规范
  • Docker:登录私有仓库\退出私有仓库
  • 与擎创科技共建一体化“数智”运维体系,实现数字化转型
  • 开放网络+私有云=?星融元的私有云承载网络解决方案实例
  • 【Linux学习笔记】Linux下nginx环境搭建
  • Python打包
  • 2023启示录丨自动驾驶这一年
  • node实现对git仓库的管理
  • 『JavaScript』全面解析JavaScript中的防抖与节流技术及其应用场景
  • 智能优化算法应用:基于袋獾算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • Ubuntu20.04-查看GPU的使用情况及输出详解
  • Python中的数据序列
  • 带您了解目前AI在测试领域能够解决的那些问题
  • Jmeter学习总结(2)——时间参数化time
  • Leetcode 746 使用最小花费爬楼梯
  • 2023/12/21作业
  • Python 数据类型 (2)