<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
#c{border:1px #000 solid;}
#c2{border:1px #000 solid;margin-top:500px;}
</style>
</head>
<body>
<canvas id="c" progress='0'></canvas>
<script>
start("c",100,70,"#e74c3c","#fff","#ddd","#e74c3c",2);
/*----------------------------------------------------------------------
/*参数说明
/*obj[对象id,或对象],r1[大圆半径], r2[内圆直径]
/*r1_color[大圆颜色], r2_color[大圆颜色]
/*bg_color[圆环背景颜色],font_color[字体颜色],step[步长:数字增加]
/*[progress属性值为初始值]
/*---------------------------------------------------------------------*/
function start(obj,r1,r2,r1_color,r2_color,bg_color,font_color,step){
function num() {
progress=progress+step;
circle.setAttribute('progress',progress);
//console.log(progress);
ring_progress(obj,r1,r2,r1_color,r2_color,bg_color,font_color);
t=setTimeout(num,60);
if(progress==100){clearTimeout(t)}
};num();
}
function ring_progress(obj,r1,r2,r1_color,r2_color,bg_color,font_color){
var xx=yy=rr=r1;
var ring_width=r1-r2; //圆环宽
var progress='';//进度%
var r1_color=r1_color||'#e74c3c';
var r2_color=r2_color||'#fff';
var font_color=font_color||'#e74c3c';
var bg_color=bg_color||'#ddd';
var circle=document.getElementById(obj)||obj;
progress=circle.getAttribute('progress');
circle.width=2*rr;
circle.height=2*rr;
var context=circle.getContext("2d");
context.beginPath();
context.moveTo(xx, yy);
context.arc(xx, yy, rr, 0, Math.PI * 2, false);
context.fillStyle =bg_color;
context.fill();
// 画进度
context.beginPath();
context.moveTo(xx, yy);
context.arc(xx, yy, rr,1.5*Math.PI, 1.5*Math.PI+2*Math.PI*progress/100 , false);
context.fillStyle =r1_color;
context.fill();
// 画内部空白
context.beginPath();
context.moveTo(xx, yy);
context.arc(xx, yy,rr-ring_width, 0, Math.PI * 2, true);
context.fillStyle =r2_color;
context.fill();
//在中间写字
context.font = "bold 24px Arial";
context.fillStyle =font_color;
context.textAlign = 'center';
context.textBaseline = 'middle';
context.moveTo(xx, yy);
context.fillText(progress+'%', xx, yy);
}
</script>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
#c{border:1px #000 solid;}
#c2{border:1px #000 solid;margin-top:500px;}
</style>
</head>
<body>
<canvas id="c" progress='0'></canvas>
<script>
start("c",100,70,"#e74c3c","#fff","#ddd","#e74c3c",2);
/*----------------------------------------------------------------------
/*参数说明
/*obj[对象id,或对象],r1[大圆半径], r2[内圆直径]
/*r1_color[大圆颜色], r2_color[大圆颜色]
/*bg_color[圆环背景颜色],font_color[字体颜色],step[步长:数字增加]
/*[progress属性值为初始值]
/*---------------------------------------------------------------------*/
function start(obj,r1,r2,r1_color,r2_color,bg_color,font_color,step){
var circle=document.getElementById(obj)||obj;
var progress=circle.getAttribute(progress);
var t=null;function num() {
progress=progress+step;
circle.setAttribute('progress',progress);
//console.log(progress);
ring_progress(obj,r1,r2,r1_color,r2_color,bg_color,font_color);
t=setTimeout(num,60);
if(progress==100){clearTimeout(t)}
};num();
}
function ring_progress(obj,r1,r2,r1_color,r2_color,bg_color,font_color){
var xx=yy=rr=r1;
var ring_width=r1-r2; //圆环宽
var progress='';//进度%
var r1_color=r1_color||'#e74c3c';
var r2_color=r2_color||'#fff';
var font_color=font_color||'#e74c3c';
var bg_color=bg_color||'#ddd';
var circle=document.getElementById(obj)||obj;
progress=circle.getAttribute('progress');
circle.width=2*rr;
circle.height=2*rr;
var context=circle.getContext("2d");
context.beginPath();
context.moveTo(xx, yy);
context.arc(xx, yy, rr, 0, Math.PI * 2, false);
context.fillStyle =bg_color;
context.fill();
// 画进度
context.beginPath();
context.moveTo(xx, yy);
context.arc(xx, yy, rr,1.5*Math.PI, 1.5*Math.PI+2*Math.PI*progress/100 , false);
context.fillStyle =r1_color;
context.fill();
// 画内部空白
context.beginPath();
context.moveTo(xx, yy);
context.arc(xx, yy,rr-ring_width, 0, Math.PI * 2, true);
context.fillStyle =r2_color;
context.fill();
//在中间写字
context.font = "bold 24px Arial";
context.fillStyle =font_color;
context.textAlign = 'center';
context.textBaseline = 'middle';
context.moveTo(xx, yy);
context.fillText(progress+'%', xx, yy);
}
</script>
</body>