美文网首页
2018-04-27 Js实现环形进度条

2018-04-27 Js实现环形进度条

作者: 胡諾 | 来源:发表于2018-04-28 08:41 被阅读0次

最近做了一个在线考试结果的进度环,由于各种原因没有用很多现成已有的插件啊之类的

各种东西,就自己用通过查资料,在别人的基础上改写了一个环形进度条

Html:

<div id="fDiv" style="width:100%;margin-top:50px;">
    <canvas id="myCanvas">
    </canvas>
</div>

Js:

//先在画布上画上一个底环
$scope.drawRing = function() {
    //先创建一个canvas画布对象,设置宽高
    var c = document.getElementById('myCanvas');
    var ctx = c.getContext('2d');
    ctx.canvas.width = 220;
    ctx.canvas.height = 220;
    //起始一条路径
    ctx.beginPath();
    //设置当前线条的宽度
    ctx.lineWidth = 10;
    ctx.setLineDash([2, 4]); //实现间隔效果 每隔4单位 空2单位
    //设置笔触的颜色
    ctx.strokeStyle = '#d1d6d7';
    //arc()方法创建弧/曲线(用于创建圆或部分圆)arc(圆心x,圆心y,半径,开始角度,结束角度)
    ctx.arc(110, 110, 100, -90 * Math.PI / 180, 2 * Math.PI);
    //绘制已定义的路径
    ctx.stroke();
}

//根据传入的val的值的不同,以-90度也就是坐标轴y轴的正方向,沿着底环在画布上再画一个新的弧形,这样就会呈现进度的效果
$scope.loadCircle = function(val) {
    //先创建一个canvas画布对象,设置宽高
    var c = document.getElementById('myCanvas');
    var ctx = c.getContext('2d');
    //绘制根据百分比变动的环
    ctx.beginPath();
    ctx.lineWidth = 10;
    ctx.setLineDash([2, 4]); //实现间隔效果
    //设置开始处为0点钟方向(-90*Math.PI/180)
    //x为百分比值(0-100)
    ctx.arc(110, 110, 100, -90 * Math.PI / 180, (val * 3.6 - 90) * Math.PI / 180);
    ctx.stroke();
    ctx.fillText("", 110, 170); //在画布内某个位置画上文字,函数三个参数:内容,x坐标,y坐标
}
///调用上面的函数
$scope.search = function() {
    var socre = 90;
    $scope.drawRing();
    $scope.loadCircle(score);

    //下面注释的代码,是为了实现进度环的加载动画:自己想好动画的速度
    //比如我写的这样:默认为1000毫秒内加载完,如果分数大于30小于60则1500毫秒等等...然后设置每100毫秒画一次
    //比如这里分数是90,那么要在2000毫秒内画完,每100毫秒画一次,那么可以将90分成20分,第一次画20/1,第二次重新画2/20,以此往下,知道2000毫秒跑完
    //var timer = 0;
    //var seconds = 1000;//毫秒
    //if (score <= 30)
    //    seconds = 1000;
    //else if (score <= 60)
    //    seconds = 1500;
    //else
    //    seconds = 2000;
    //var eachval = (100 / seconds) * score;
    //var val = 0;
    //timer = $interval(function () {
    //    val += eachval;
    //    $scope.loadCircle(val);
    //    seconds -= 100;
    //    if (seconds <= 0)
    //        $interval.cancel(timer);
    //}, 100);
}

本文作者:陈孚楠

<上一篇 目录 下一篇>

相关文章

网友评论

      本文标题:2018-04-27 Js实现环形进度条

      本文链接:https://www.haomeiwen.com/subject/nzmwlftx.html