赞
踩
效果图1:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Canvas progress</title></head><body> <canvas id="process" width="200" height="200"></canvas> <script> (function (){ var c = document.getElementById('process'), process = 0, ctx = c.getContext('2d'); // 画灰色的圆 ctx.beginPath(); ctx.arc(100, 100, 80, 0, Math.PI*2); // ctx.closePath(); ctx.strokeStyle = 'green'; ctx.stroke(); // 画红色的圆 ctx.beginPath(); ctx.arc(100, 100, 70, 0, Math.PI*2); // ctx.closePath(); ctx.fillStyle = 'red'; ctx.fill(); function animate(){ requestAnimationFrame(function (){ process = process + 1; drawCricle(ctx, process); if (process < 90) { animate(); } }); } function drawCricle(ctx, percent){ // 画进度环 ctx.beginPath(); ctx.moveTo(100, 100); ctx.arc(100, 100, 80, Math.PI * 1.5, Math.PI * (1.5 + 2 * percent / 100 )); ctx.closePath(); ctx.fillStyle = 'yellow'; ctx.fill(); // 画内填充圆 ctx.beginPath(); ctx.arc(100, 100, 60, 0, Math.PI * 2); ctx.closePath(); ctx.fillStyle = '#fff'; ctx.fill(); // 填充文字 ctx.font = "bold 20pt Microsoft YaHei"; ctx.fillStyle = '#333'; ctx.textAlign = 'center'; ctx.textBaseline = 'middle'; ctx.moveTo(100, 100); ctx.fillText(process + '%', 100, 100); } animate(); }()); </script></body></html>
效果图2:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Canvas progress</title></head><body> <canvas id="process" width="300" height="300"></canvas> <script> (function (){ var c = document.getElementById('process'), process = 0, ctx = c.getContext('2d'); function animate(){ requestAnimationFrame(function (){ process = process + 1; drawCricle(ctx, process); if (process < 75) { animate(); } }); } function drawCricle(ctx, percent){ // 画进度环 ctx.beginPath(); ctx.moveTo(100, 100); ctx.arc(100, 100, 80, Math.PI * 1.5, Math.PI * (1.5 + 2 * percent / 100 )); ctx.closePath(); ctx.fillStyle = '#108EE9'; ctx.fill(); // 画第一层灰色的圆 ctx.beginPath(); ctx.arc(100, 100, 70, 0, Math.PI*2); // ctx.closePath(); ctx.fillStyle = '#ededed'; ctx.fill(); // 画第二层白色的圆 ctx.beginPath(); ctx.arc(100, 100, 65, 0, Math.PI*2); // ctx.closePath(); ctx.fillStyle = '#fcfcfc'; ctx.fill(); // 画内填充圆 ctx.beginPath(); ctx.arc(100, 100, 55, 0, Math.PI * 2); ctx.closePath(); ctx.fillStyle = '#FAFCFC'; ctx.fill(); // 画灰色的框 ctx.beginPath(); ctx.arc(100, 100, 55, 0, Math.PI*2); // ctx.closePath(); ctx.strokeStyle = '#f2f2f2'; ctx.stroke(); // 填充文字 ctx.font = "bold 20pt Microsoft YaHei"; ctx.fillStyle = '#DA4816'; ctx.textAlign = 'center'; ctx.textBaseline = 'middle'; ctx.moveTo(100, 100); ctx.fillText(process + '%', 100, 80); ctx.fillStyle = '#aaa'; ctx.font="10px Georgia"; ctx.fillText("销售目标完成度",100,100); // ctx.font="10px Georgia"; ctx.fillText("集团内排名",100,120); ctx.fillStyle = '#DA4816'; ctx.font="10px Georgia"; ctx.fillText("1",100,140); } animate(); }()); </script></body></html>