查看演示
<div><canvas data-num="60" width="80" height="80" class="canvas"></canvas></div> <div><canvas data-num="80" width="80" height="80" class="canvas"></canvas></div> <div><canvas data-num="50" width="80" height="80" class="canvas"></canvas></div>
function arcCanvas(num,canvasEle){
var residual = num;//剩余量
var canvas = canvasEle,
context = canvas.getContext('2d'),//获取画圆环境,指明为2d
centerX = canvas.width/2,//圆的中心X点
centerY = canvas.height/2,//圆的中心Y点
rad = Math.PI *2 /100,//将圆分成100分,那么每份就是rad度
speed = 0.1;
//外圈
function blueCircle(n){
context.save();
context.strokeStyle ="#ff8265";//描边样式
context.lineWidth = 5;//设置线宽
context.lineCap = "round";
context.beginPath();//路径开始
//用于绘制圆弧context.arc(x左边,y坐标)
context.arc(centerX,centerY,30,-Math.PI/2,-Math.PI/2 +n*rad,false);
context.stroke();//绘制
context.closePath();//路径结束
context.restore();
}
//内圈
function whiteCircle(){
context.save();
context.strokeStyle='#ffefdf';
context.lineWidth=5;
context.beginPath();
context.arc(centerX,centerY,30,0,Math.PI *2 ,false);
context.stroke();
context.closePath();
context.restore()
}
//百分比文字绘制
function text(n){
context.save();//save 跟restore 可以保证样式属性只用于该段的canvas
context.strokeStyle='#ff5933';
context.fillStyle="#ff5933";
context.font = '14px arial';
context.fillText("已抢",centerX-15,centerY-5);
//绘制字体并且制定位置
context.strokeText(n.toFixed()+"%",centerX-15,centerY+10);
//context.stroke();
context.restore();
}
//初始化
(function drawFrame(){
window.requestAnimationFrame(drawFrame);
context.clearRect(0, 0, canvas.width, canvas.height);
whiteCircle();
blueCircle(speed);
text(speed);
//ajax
if (speed < residual) {
speed+=0.3;
}else{
speed = residual;
}
}());
}
$('.canvas').each(function(){
var num = parseInt($(this).attr('data-num')),
canvasEle = $(this)[0];
arcCanvas(num,canvasEle);
})
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
