<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<style type="text/css">
/*S 画圆*/
.cell{
width: 66px;
height: 66px;
margin-top:2px ;
margin-left:12px ;
margin-right:12px ;
position: relative;
float: left;
}
.canvas-pic{
position: absolute;
width: 37px;
height: 37px;
left: 14px;
top: 15px;
}
.canvas-speed{
position: absolute;
left: 14px;
top: 6px;
font-weight: 600;
color: #197efb;
-webkit-background-clip: text;
background-image: -webkit-gradient(linear, 0 0, 0 bottom, from(#1c87fb), to(#197efb));
-webkit-text-fill-color: transparent;
}
.myCanvas{
position: absolute;
margin: 0 auto;
display: block;
}
/*E 画圆*/
</style>
<body>
<div class="cell">
<canvas class="myCanvas">当前浏览器不支持canvas组件请升级!</canvas>
<img src="https://csdnimg.cn/medal/chizhiyiheng@240.png" class="canvas-pic"/>
<p class="canvas-speed"></p>
</div>
<div class="cell">
<canvas class="myCanvas">当前浏览器不支持canvas组件请升级!</canvas>
<img src="https://csdnimg.cn/medal/chizhiyiheng@240.png" class="canvas-pic"/>
<p class="canvas-speed"></p>
</div>
</body>
</html>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
var ctx = [];
var num = [];
var rander = [];
run();
function run(){
$(".cell").each(function(i, item){
var c = $(this).find(".myCanvas");
console.log(c.get(0).getContext("2d"));
ctx[i] = c.get(0).getContext("2d");
var mW = c.width = 66;
var mH = c.height = 66;
var lineWidth = 3;
var r = mW / 2; //中间位置
//var cR = r - 4 * lineWidth; //圆半径
var cR = 30; //圆半径
var startAngle = -(1 / 2 * Math.PI); //开始角度
var endAngle = startAngle + 2 * Math.PI; //结束角度
var xAngle = 5 * (Math.PI / 180); //偏移角度量
var fontSize = 12; //字号大小
var tmpAngle = startAngle; //临时角度变量
//渲染函数
rander[i] = function(){
if (tmpAngle >= endAngle) {
return;
} else if (tmpAngle + xAngle > endAngle) {
tmpAngle = endAngle;
} else {
tmpAngle += xAngle;
}
ctx[i].clearRect(0, 0, mW, mH);
//画圈
ctx[i].beginPath();
ctx[i].lineWidth = lineWidth;
var gradient=ctx[i].createLinearGradient(0,0,170,0);
gradient.addColorStop("0","magenta");
gradient.addColorStop("0.5","blue");
gradient.addColorStop("1.0","red");
ctx[i].strokeStyle = gradient;
ctx[i].arc(r, r, cR, startAngle, tmpAngle);
ctx[i].stroke();
ctx[i].closePath();
//写字
num[i] = Math.round((tmpAngle - startAngle) / (endAngle - startAngle) * 100);
$(".canvas-speed").html(num[i] + '%');
requestAnimationFrame(rander[i]);
}
rander[i]();
});
}
</script>