• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > H5动画--canvas绘制圆环百分比进度的实例

H5动画--canvas绘制圆环百分比进度的实例

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含H5动画,canvas,圆环,进度等相关知识,匿名希望在学习及工作中可以帮助到您

1.效果图

这里写图片描述
2.原理
第一步绘制一个整圆颜色自定义,第二部绘制一个内圆,其半径要小于外圆颜色自定
最后一步按照百分比绘制第三个圆,颜色自定。
要实现动态绘制第三步的效果,只要添加一个定时器的功能,每隔一段时间绘制一段距离,设定一个阀值
当大于这个阀值得时候就清空这个定时器,这个阀值其实就是要显示的百分比值。每次绘制0.01.
注意:在定时器内绘制时,要把第二步绘制内圆,空白圆也在定时器中绘制。

3.知识点
绘制公式:arc(x, y, radius, startRad, endRad, anticlockwise)
在canvas画布上绘制以坐标点(x,y)为圆心、半径为radius的圆上的一段弧线。这段弧线的起始弧度是startRad,结束弧度是endRad。这里的弧度是以x轴正方向(时钟三点钟)为基准、进行顺时针旋转的角度来计算的。anticlockwise表示是以逆时针方向还是顺时针方向开始绘制,如果为true则表示逆时针,如果为false则表示顺时针。anticlockwise参数是可选的,默认为false,即顺时针。

4.js源代码

<script src="jquery.min.js"></script><script>function circleProgress(value,average){
    var canvas = document.getElementById("yuan");    var context = canvas.getContext('2d');    var _this = $(canvas),
    value= Number(value),// 当前百分比,数值
    average = Number(average),// 平均百分比
    color = "",// 进度条、文字样式
    maxpercent = 100,//最大百分比,可设置
    c_width = _this.width(),// canvas,宽度
    c_height =_this.height();// canvas,高度
    // 判断设置当前显示颜色
    if( value== maxpercent ){
        color="#29c9ad";
    }else if( value> average ){
        color="#27b5ff";
    }else{
        color="#ff6100";
    }    // 清空画布
    context.clearRect(0, 0, c_width, c_height);    // 画初始圆
    context.beginPath();    // 将起始点移到canvas中心
    context.moveTo(c_width/2, c_height/2);    // 绘制一个中心点为(c_width/2, c_height/2),半径为c_height/2,起始点0,终止点为Math.PI * 2的 整圆
    context.arc(c_width/2, c_height/2, c_height/2, 0, Math.PI * 2, false);
    context.closePath();
    context.fillStyle = '#ddd'; //填充颜色
    context.fill();    // 绘制内圆
    context.beginPath();
    context.strokeStyle = color;
    context.lineCap = 'square';
    context.closePath();
    context.fill();
    context.lineWidth = 10.0;//绘制内圆的线宽度

    function draw(cur){
        // 画内部空白  
        context.beginPath();  
        context.moveTo(24, 24);  
        context.arc(c_width/2, c_height/2, c_height/2-10, 0, Math.PI * 2, true);  
        context.closePath();  
        context.fillStyle = 'rgba(255,255,255,1)';  // 填充内部颜色
        context.fill();        // 画内圆
        context.beginPath();        // 绘制一个中心点为(c_width/2, c_height/2),半径为c_height/2-5不与外圆重叠,
        // 起始点-(Math.PI/2),终止点为((Math.PI*2)*cur)-Math.PI/2的 整圆cur为每一次绘制的距离
        context.arc(c_width/2, c_height/2, c_height/2-5, -(Math.PI / 2), ((Math.PI * 2) * cur ) - Math.PI / 2, false);
        context.stroke();        //在中间写字  
        context.font = "bold 18pt Arial";  // 字体大小,样式
        context.fillStyle = color;  // 颜色
        context.textAlign = 'center';  // 位置
        context.textBaseline = 'middle';  
        context.moveTo(c_width/2, c_height/2);  // 文字填充位置
        context.fillText(value+"%", c_width/2, c_height/2-20);
        context.fillText("正确率", c_width/2, c_height/2+20);
    }    // 调用定时器实现动态效果
    var timer=null,n=0;    function loadCanvas(nowT){
        timer = setInterval(function(){
            if(n>nowT){
                clearInterval(timer);
            }else{
                draw(n);
                n += 0.01;
            }
        },15);
    }
    loadCanvas(value/100);
    timer=null;
}; 
</script>

最后需用调用circleProgress这个方法,并把相应的参数穿进去。博主是这样写的,通过点击按钮触发。。。

<input onclick="circleProgress(10,50)" value="画圆" type="button"><canvas id="yuan"></canvas>

【相关推荐】

1. HTML5 canvas基本绘图之绘制曲线

2. 详解canvas实现圆弧、圆环进度条的实例方法

3. 分享h5 canvas圆圈进度条的实例代码

4. 小程序开发之利用co处理异步流程的实例教程

5. H5 canvas实现圆形动态加载进度实例

以上就是H5动画--canvas绘制圆环百分比进度的实例的详细内容,更多请关注微课江湖其它相关文章!

您可能想查找下面的文章:

  • H5动画--canvas绘制圆环百分比进度的实例

相关文章

  • 2017-08-06解决canvas转base64/jpeg时透明区域变成黑色背景的方法
  • 2018-12-03学习前端开发 HTML5那个培训机构比较好呢,求答复?
  • 2018-12-03HTML5 canvas中如何绘制图像
  • 2017-08-06HTML5的video标签的浏览器兼容性增强方案分享
  • 2018-12-03小强的HTML5移动开发之路(8)——坦克大战游戏2
  • 2018-12-03HTML5中新增的标签和属性的总结
  • 2018-12-03HTML5里的placeholder属性使用实例和美化显示效果的方法_html5教程技巧
  • 2018-12-03Html5 Canvas初探学习笔记(3) -绘制样式和绘制文本
  • 2018-12-03HTML5第一人称射击游戏实现的代码分享
  • 2018-12-03如何系统学习Web全栈开发?

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • HTML5游戏框架cnGameJS开发实录-实现动画原理
    • HTML5对手机页面长按会粘贴复制禁用的解决方法
    • WebGL怎样操作json与echarts图表
    • html5播放视频且动态截图实现步骤与代码(支持safari其他未测试)_html5教程技巧
    • 如何利用input事件来监听移动端的输入
    • 畅谈HTML5 到底是什么?
    • 用HTML5 实现橡皮擦的涂抹效果的教程
    • canvas API ,通俗的canvas基础知识(六)
    • JS之原生数组splice方法实例
    • H5虚拟键盘挡住输入框怎么办

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有