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

最简单圆形进度条实现CSS+javascript,两端带圆弧

两端是弧形的圆形进度条。
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>Document</title>
		<style>
			/* 定义css变量 */
			:root {
				--progress: 0%;
				--endRotate: 0deg;
				--contentSize: 100px
					/* 这位置改变整体进度条大小 */
			}

			/* 外圈 */
			.progress {
				position: relative;
				width: var(--contentSize);
				height: var(--contentSize);
				/* 进度条的颜色处理 */
				background: conic-gradient(#7095ff,
						#1752f7 var(--progress),
						/* 取得:root 中定义的progress值 */
						#ccc var(--progress),
						#ccc);
				border-radius: 50%;
				position: relative;
				transform: rotateY(0);
			}

			/* 内圈*/
			.son {
				position: absolute;
				top: 50%;
				left: 50%;
				transform: translate(-50%, -50%);
				width: calc(var(--contentSize)*0.8);
				height: calc(var(--contentSize)*0.8);
				background-color: #fff;
				border-radius: 50%;
			}

			/* 进度条起点的圆 */
			.progress::before {
				position: absolute;
				display: inline-block;
				content: "";
				width: calc(var(--contentSize)*0.1);
				height: calc(var(--contentSize)*0.1);
				border-radius: 50%;
				background-color: #7095ff;
				top: 0;
				left: 50%;
				transform: translateX(-50%);
			}

			/* 进度条*/
			.end {
				position: absolute;
				top: 0;
				left: 0;
				width: 100%;
				height: 100%;
				border-radius: 50%;
				transform: rotate(var(--endRotate));
				/* 取得:root 中定义的endRotate值 */
			}

			/* 进度条终点的圆 */
			.end::before {
				position: absolute;
				display: inline-block;
				content: "";
				width: calc(var(--contentSize)*0.1);
				height: calc(var(--contentSize)*0.1);
				border-radius: 50%;
				background-color: #1752f7;
				top: 0;
				left: 50%;
				transform: translateX(-50%);
			}
		</style>
	</head>
	<body>
		<div class="progress">
			<div class="son"></div>
			<div class="end"></div>
		</div>

		<script>
			// let root = document.querySelector(":root");
			//设置变量
			// root.style.setProperty("--progress", "50%");
			// 读取 CSS 变量
			//let rootStyle = getComputedStyle(root);
			//let progress = rootStyle.getPropertyValue("--progress");
			// 删除 CSS 变量
			//root.style.removeProperty("--progress");





			let jd = 0,
				root = document.querySelector(":root");
			let a = setInterval(function() {
				jd++;
				var bfb = jd / 100;
				root.style.setProperty("--progress", bfb * 100 + "%");
				root.style.setProperty("--endRotate", 360 * bfb + "deg");
				if (jd == 100) clearInterval(a)
			}, 100)
		</script>
	</body>
</html>

相关文章:

  • 《原型链的故事:JavaScript 对象模型的秘密》
  • Docker 部署 MongoDB 并持久化数据
  • Linux上位机开发(开篇)
  • golang从入门到做牛马:第二篇-go语言安装及开发环境配置
  • Nginx快速安装-Linux-CentOS7
  • 【A2DP】SBC 编解码器互操作性要求详解
  • 2025最新群智能优化算法:山羊优化算法(Goat Optimization Algorithm, GOA)求解23个经典函数测试集,MATLAB
  • BGP 基本配置实验
  • 在Windows 11的WSL中安装Kali Linux
  • Linux笔记---自定义shell
  • lvgl在ubuntu中模拟运行
  • 【商城实战(13)】购物车价格与数量的奥秘
  • 小程序 wxml 语法 —— 42 条件渲染
  • 【小技巧】百度网盘清除重复文件详细步骤
  • 论文阅读方法
  • 【CVPR2025】 EVSSM:用状态空间模型高效去模糊
  • [密码学实战]Java实现国密TLSv1.3单向认证
  • 在html中如何给标签的title=“换行的方法“
  • 【linux网络编程】端口
  • Electron打包工具对比
  • 1元做网站方案/哪个公司的网站制作
  • 南京企业做网站/百度seo原理
  • 网站营销的优缺点/义乌最好的电商培训学校
  • 怎样做diy家具网站/百度分析
  • 广告推广网站怎么做/网络推广外包公司排名
  • 辽宁建设厅勘察设计网站/b站在哪付费推广