使用了H5中canvas绘制圆弧,文本,清除内容,搭配定时器灵活控制,从而实时改变其颜色和文本。
绘制文本时需要注意文本上下左右的居中,简单计算下就行。
完整代码如下:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
canvas {
background: #efefef;
}
</style>
</head>
<body>
<h1>绘制圆形进度条</h1>
<canvas id="canvas4" width="500" height="500"></canvas>
<script>
var ctx = canvas4.getContext('2d');
ctx.lineWidth = 30;
ctx.font = '60px SimHei';
var start = -90;
var end = -90;
var timer = setInterval(function(){
//此处可以不清除已有内容
ctx.clearRect(0,0,500,500);
end += 10;
//绘制圆弧
ctx.beginPath();
ctx.arc(250,250,100,start*Math.PI/180,end*Math.PI/180);
if(end-start<120){ //1/3范围内
ctx.strokeStyle = 'red';
ctx.fillStyle = 'red';
}else if(end-start<240){ //1/3~2/3范围内
ctx.strokeStyle = 'orange';
ctx.fillStyle = 'orange';
}else { //2/3~3/3范围内
ctx.strokeStyle = 'green';
ctx.fillStyle = 'green';
}
ctx.stroke();
//绘制文字
var percentage = Math.floor((end-start)/360*100) + '%';
var txtWidth = ctx.measureText(percentage).width; //获得文字的宽度
ctx.fillText(percentage, 250-txtWidth/2, 250+30-10); //绘制文本
if(end>=270){
clearInterval(timer);
}
}, 200)
</script>
</body>
</html>