console
window.onload = function(){
drawCanvanPercent("percent","myCanvas")
}
window.onresize = function(){
drawCanvanPercent("percent","myCanvas")
}
function drawCanvanPercent(percentId,c_Id){
var per = 0;
var _canvas = document.getElementById(c_Id);
var canvasId = c_Id;
var cirR = ( _canvas.parentElement.clientWidth - 20 ) / 2 ;
var lineWidth = 2;
var borColor = "#0053FF";
var dushu_ele = document.getElementById(percentId);
_canvas.width = cirR *2+2 || _canvas.parentElement.clientWidth;
_canvas.height = cirR *2+2 || _canvas.parentElement.clientWidth;
drawCircle(_canvas,cirR,lineWidth,borColor);
var ctx2 = _canvas.getContext("2d");
var circle = {
r : cirR,
per : _canvas.getAttribute('data-percent'),
lineWidth : 10
};
if(_canvas.getContext){
drawPercent2(ctx2,circle,per,dushu_ele);
}
function drawPercent2(ctx2,circle,per,dushu_ele){
var pper_interal= setInterval(function () {
if(per>=circle.per){
per=circle.per;
clearTimeout(pper_interal);
}else{
per++;
}
dushu_ele.innerText=per+'%';
ctx2.beginPath();
var g = ctx2.createLinearGradient(0,0,0,per);
g.addColorStop(0, '#00EEE1');
g.addColorStop(1, '#0257EA ');
ctx2.strokeStyle = g;
ctx2.lineCap = "round";
ctx2.lineWidth = circle.lineWidth;
ctx2.arc(circle.r+1, circle.r+1, circle.r-5,1.5*Math.PI, Math.PI*(1.5-(per/100)*270/180 ), true );
ctx2.stroke();
ctx2.closePath();
}, 10);
}
function drawCircle(obj,cir_r,lineWidth,color){
var ctx=obj.getContext("2d");
var x = obj.clientWidth /2 ;
var y = obj.clientHeight/ 2;
ctx.beginPath();
ctx.strokeStyle = color;
ctx.lineWidth= lineWidth;
ctx.arc(cir_r+1,cir_r+1,cir_r,0,1.5*Math.PI);
ctx.stroke();
}
}
<div class="rea-num reach-charts">
<div class="reach-text">
<div id="percent" class="reach-percent" ></div>
<div>成功率</div>
</div>
<canvas id="myCanvas" data-percent="90" class="canvas-circle">
您的浏览器不支持canvas标签。
</canvas>
</div>
body,html{
padding: 0;
margin: 0;
font-family: "微软雅黑",arial;
font-size: 100px;
color: #fff;
background-color: #022136;
}
.reach-charts{
overflow: hidden;
margin: 0.5rem;
width: 1.6rem;
height: 1.6rem;
border: 0.04rem solid rgba(255,255,255,0.10);
border-radius: 100%;
padding: 0.1rem;
position: relative;
margin:50px auto;
}
.reach-text{
color: #fff;
position: absolute;
text-align: center;
width: 1.6rem;
text-align: center;
font-size: 0.14rem;
margin-top: 50%;
top:-0.4rem
}
.reach-percent{
font-size: 0.4rem;
}
.canvas-circle {
position:absolute;
top:50%;
left:50%;
transform:translate(-50%,-50%)
}