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

最简单圆形进度条实现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>

http://www.kler.cn/a/581458.html

相关文章:

  • vue3自定义指令实现输入框值范围大小限制
  • Spring AI 1.0.0 M6新特性MCP
  • yolov8自定义实例分割
  • 清华大学出品《DeepSeek从入门到精通》超详细使用手册pdf
  • React学习笔记14
  • 从零构建 KNN 分类: sklearn 与自定义实现对比
  • JMeter使用BeanShell断言
  • 训练大模型LLM选择哪种开发语言最好
  • 前端开发中的设计模式:策略模式的应用与实践
  • C#的判断语句总结
  • Ubuntu开荒
  • llvm数据流分析
  • 【1688】崖山集群YAC安装备忘
  • 【软件设计】23 种设计模式解析与实践指南
  • bash---括号之间的区别
  • 『PostgreSQL』PGSQL备份与还原实操指南
  • kubernetes——part3-5 核心概念 Service
  • 《基于深度学习的图像修复技术研究与应用-图像修复》—3000字论文模板
  • golang从入门到做牛马:第十五篇-Go语言切片(Slice):动态数组的“魔法”
  • 【编程题】7-6 列出连通集