js实现圆型的进度条

一次项目需求中需要实现一个圆形的进度条,就参考了网上的一些资料做了一个demo,具体代码如下:

 

 

<!DOCTYPE html>

<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			.wrap,.circle,.num {width: 200px;height: 200px;border-radius: 50%;}
			.wrap {	position: relative;	border: 10px solid #ccc;box-sizing: border-box;}
			.circle { position: absolute; top: -10px; left: -10px; box-sizing: border-box;}
			.circle div {width: 200px; height: 200px;position: absolute;box-sizing: border-box;	border-radius: 50%;}
			.num {	position: absolute;	top: -10px;	left: -10px;	line-height: 200px;	text-align: center;	font-size: 50px;}
			.left {	clip: rect(0, 100px, 200px, 0);	border: 10px solid #f00;}
			.right {clip: rect(0, 200px, 200px, 100px);	border: 10px solid #f00;}
		</style>
	</head>


	<body>
		<div id="box"></div>
		<div id="box1"></div>
		<div id="box2"></div>
		<div id="box3"></div>
	</body>


</html>
<script type="text/javascript">
	
	function Pie(id,num){
		this.box = document.getElementById(id);//获取节点
		this.box.className = 'wrap';
		
		//创建节点circle
		this.circle = document.createElement("div");
		this.circle.className = "circle";
		this.box.appendChild(this.circle);
		
		//创建circle的子节点left
		this.left = document.createElement("div");
		this.left.className = "left";
		this.circle.appendChild(this.left);
		
		//创建circle的子节点right
		this.right = document.createElement("div");
		this.right.className = "right";
		this.circle.appendChild(this.right);
		
		//创建节点num
		this.num = document.createElement("div");
		this.num.className = "num";
		this.box.appendChild(this.num);
		this.num.innerHTML = '<span id="">'+ num +'</span>%';
		
		this.jz(num);
	}
	
	Pie.prototype.jz = function(num){
		var i = 0;
		var that = this;
		var int = setInterval(function(){
			that.gx( num/10*i );
			i++;
			if(i>10){
				clearInterval(int)
			}
		},50);
	}
	
	Pie.prototype.gx  = function(n){
		
		if(n <= 50) {
			this.right.style.display = 'none';
			this.circle.style.clip = 'rect(0, 200px, 200px, 100px)';
		} else {
			this.right.style.display = 'block';
			this.circle.style.clip = 'rect(auto, auto, auto, auto)';
		}
		this.left.style.transform = 'rotate(' + n * 360 / 100 + 'deg)';
		
	}
	
	var box = new Pie('box',25);
	var box1 = new Pie('box1',100);
	var box2 = new Pie('box2',75);
	var box3 = new Pie('box3',66);
	
</script>

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值