jquery插件canvaspercent.js实现百分比圆饼效果

在仪表盘的任务增多同时,列表页的百分比圆环或圆饼也随之增多,于是顺手在仪表盘的基础上,封装了一个小小的jquery插件(jq-canvaspercent.js),暂且版本1.0吧,到以后业务的变化在对其进行功能拓展;

暂时性用于页面中有多处百分比圆环的效果处理,还是不错的。

jq-canvaspercent.js代码比较简单,以下直接给出插件代码和几张截图:

/*
 * canvaspercent 0.1
 * Copyright:HeavyShell
 * Date: 2016-06-27
 * 利用canvas绘图实现百分比percent圆饼图
 */
(function($){
  $.fn.drawCanvasPercent = function(options){
    //各种属性、参数
    var defaults = {
      type:1, //类型默认1,有[1,2,3]
      dw:'rem',  //判断是单位是rem还是px
      cir_r:1,  //圆饼的直径
      cir_color:'#0e9cfa', //圆饼的占比颜色
      cir_color_op:'#e0ebf4', //圆饼的占比颜色
      line_w:0.16,  //圆饼的线条宽度
      fill_color:"#fff"  //圆饼的中间区域填充颜色
    }
    var options = $.extend(defaults, options);
    this.each(function(){
      //插件实现代码
      var cur_obj=$(this);
      if(options.dw=="rem"){
        var cur_cir_r=options.cir_r*(window.screen.width/10);
        var cur_line_w=options.line_w*(window.screen.width/10);
      }else{
        var cur_cir_r=options.cir_r;
        var cur_line_w=options.line_w;
      }
      var cur_type=options.type;
      var cur_cir_color=options.cir_color;
      var cur_cir_color_op=options.cir_color_op;
      var cur_fill_color=options.fill_color;
      var percent=cur_obj.attr('data-percent');
      cur_obj.attr({'width':cur_cir_r,'height':cur_cir_r});
      cur_obj.css({'border-radius':"50%",'background':cur_cir_color_op});
      if(cur_obj[0].getContext){ 

        if(cur_type==2){
          //无填充颜色,且线条宽度等于直径
          cur_line_w=cur_cir_r;
        }else if(cur_type==3){
          //无填充颜色
        }else{
          //有填充颜色
          var ctx2 = cur_obj[0].getContext("2d");
          ctx2.fillStyle = cur_fill_color;
          ctx2.arc(cur_cir_r/2, cur_cir_r/2, cur_cir_r/2-cur_line_w/2, 0, Math.PI*2, false);
          ctx2.fill();
        } 

        var ctx = cur_obj[0].getContext("2d");
        ctx.beginPath();
        ctx.strokeStyle = cur_cir_color;
        ctx.lineWidth=cur_line_w;
        ctx.arc(cur_cir_r/2, cur_cir_r/2, cur_cir_r/2, 0, Math.PI*(percent/100)*360/180, false);
        ctx.stroke();
      }
    });
  };
})(jQuery);

调用方式:

$(function(){
    $('.perCanvas').drawCanvasPercent();
  });

也给出html页面代码吧:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="Pragma" content="no-cache">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"/>
  <meta name="format-detection" content="telephone=no"/>
  <meta name="apple-mobile-web-app-capable" content="yes"/>
  <meta name="apple-mobile-web-app-status-bar-style" content="black"/>
  <title>demo01</title>
  <style type="text/css">
    div{margin:.1rem .2rem;background:#eee;padding:.3rem}
    div span{display:block;float:right;margin:.22rem 2rem 0 0;font-size:.4rem;font-family:microsoft yahei}
    div canvas{
      -webkit-transform: rotateZ(-270deg);
      transform:rotateZ(-270deg);
      -webkit-animation:ani01 1s ease 0s both;
      animation:ani01 1s ease 0s both;
    } 

    @-webkit-keyframes ani01 {
      0%{
        -webkit-transform:scale(.5,.5) rotateZ(-270deg);
        transform:scale(.5,.5) rotateZ(-270deg);
      }
      100%{
        -webkit-transform:scale(1,1) rotateZ(-90deg);
        transform:scale(1,1) rotateZ(-90deg);
      }
    }
    @keyframes ani01 {
      0%{
        -webkit-transform:scale(.5,.5) rotateZ(-270deg);
        transform:scale(.5,.5) rotateZ(-270deg);
      }
      100%{
        -webkit-transform:scale(1,1) rotateZ(-90deg);
        transform:scale(1,1) rotateZ(-90deg);
      }
    }
  </style>
</head>
<body> 

<div>
  <canvas data-percent="80" class="perCanvas">
    您的浏览器不支持canvas标签。
  </canvas>
  <span>第一章:进度 80%</span>
</div>
<div>
  <canvas data-percent="50" class="perCanvas">
    您的浏览器不支持canvas标签。
  </canvas>
  <span>第一章:进度 50%</span>
</div>
<div>
  <canvas data-percent="75" class="perCanvas">
    您的浏览器不支持canvas标签。
  </canvas>
  <span>第一章:进度 75%</span>
</div>
<div>
  <canvas data-percent="35" class="perCanvas">
    您的浏览器不支持canvas标签。
  </canvas>
  <span>第一章:进度 35%</span>
</div>
<div>
  <canvas data-percent="95" class="perCanvas">
    您的浏览器不支持canvas标签。
  </canvas>
  <span>第一章:进度 95%</span>
</div>
<div>
  <canvas data-percent="13" class="perCanvas">
    您的浏览器不支持canvas标签。
  </canvas>
  <span>第一章:进度 13%</span>
</div> 

<script type="text/javascript" src="js/flexible.js"></script>
<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="js/jq-canvaspercent.js"></script>
<script type="text/javascript">
  $(function(){
    $('.perCanvas').drawCanvasPercent();
  });
</script> 

</body>
</html>

截图如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Javascript highcharts 饼图显示数量和百分比实例代码

    Javascript highcharts 饼图显示数量和百分比实例代码 最近公司项目需求有这样一个功能模块,highcharts 饼图显示数量和百分比 ,由于本人刚入门,看到这个需求不会写,于是就上网搜下相关资料,觉得一篇还不错记录下. <div class="piecleft" id="chart" style="height:350px; width: 350px;"> </div> <script type=

  • javascript下正则匹配百分比的代码

    <script language="javascript">     var re = /^-?\d+%$/;     alert(re.test('50%'));     alert(re.test('-25%'));     alert(re.test('3a5%')); </script>

  • js canvas实现适用于移动端的百分比仪表盘dashboard

    本文为大家分享了canvas实现适用于移动端的百分比仪表盘,供大家参考,具体内容如下 由于最近工作中,经常会遇到一些动态百分比的仪表盘,一开始都是用图片样式方式实现: 但是随着越来越多的项目,决定用canvas绘制一个简易的仪表盘,便于以后项目中直接使用: 现版本只是书写为方法形式,也许之后会有时间对其优化为插件形式. 简简单单而已,以下直接给出代码和执行过程中的三张截图: <!doctype html> <html lang="en"> <head>

  • JavaScript根据数据生成百分比图和柱状图的实例代码

    复制代码 代码如下: <HTML> <head> <title>JS百分比图和柱状图</title>   <xml:namespace prefix="v"/>   <style>    v\:* {behavior=url(#default#VML)}   </style>   <style>   a:hover {color:maroon}   h2 {color:#006600;  

  • 使用javascript获取flash加载的百分比的实现代码

    复制代码 代码如下: <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"> <title>flash download</title> </head> <body> <object id="movie" classid="clsid:d27cdb6e-ae6d

  • ECharts仪表盘实例代码(附源码下载)

    大家在汽车驾驶舱里一眼就可以看到仪表盘,使用使用Echarts制作的仪表盘可以轻松展示用户的数据,清晰的看出某个指标值所在的范围,仪表盘形式的报表应用在各种统计系统中,本文结合实例讲解仪表盘在销售任务完成率的统计应用. 效果演示      源码下载 HTML 首先引入Echarts,然后在需要放置图表的地方加上div#myChart,同时给它加上宽度和高度属性. <script src="echarts.min.js"></script> <div id=

  • javascript 计算两个整数的百分比值

    复制代码 代码如下: ///计算两个整数的百分比值 function GetPercent(num, total) { num = parseFloat(num); total = parseFloat(total); if (isNaN(num) || isNaN(total)) { return "-"; } return total <= 0 ? "0%" : (Math.round(num / total * 10000) / 100.00 + &qu

  • js canvas仿支付宝芝麻信用分仪表盘

    这是一个仿支付宝芝麻信用分的一个canvas,其实就是一个动画仪表盘. 首先, 上原图: 这个是在下支付宝上的截图,分低各位见笑了.然后看下我用canvas实现的效果图: <canvas id="canvas" width="400" height="700" data-score='724'></canvas> <!-- 设置data-score,分数区间[400, 900] --> 唉,总感觉不像.这个是G

  • jquery插件canvaspercent.js实现百分比圆饼效果

    在仪表盘的任务增多同时,列表页的百分比圆环或圆饼也随之增多,于是顺手在仪表盘的基础上,封装了一个小小的jquery插件(jq-canvaspercent.js),暂且版本1.0吧,到以后业务的变化在对其进行功能拓展: 暂时性用于页面中有多处百分比圆环的效果处理,还是不错的. jq-canvaspercent.js代码比较简单,以下直接给出插件代码和几张截图: /* * canvaspercent 0.1 * Copyright:HeavyShell * Date: 2016-06-27 * 利用

  • jQuery插件fullPage.js实现全屏滚动效果

    本文实例为大家分享了全屏滚动插件fullPage.js的具体使用方法,供大家参考,具体内容如下 0.01 基本演示  的HTML 布局 以及js 代码 //需要连接 连接的三个文件 <link rel="stylesheet" href="css/jquery.fullPage.css"> //css文件 <script src="js/jquery-1.8.3.min.js"></script> //jQue

  • jQuery插件artDialog.js使用与关闭方法示例

    本文实例讲述了jQuery插件artDialog.js使用与关闭方法.分享给大家供大家参考,具体如下: 子窗口关闭artdialog终极解决方案: window.parent.window.art.dialog({ id: 'qin123' }).close(); <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-t

  • jQuery插件ImageDrawer.js实现动态绘制图片动画(附源码下载)

    ImageDrawer.js是一款可以实现动态绘制图片动画的jQuery插件.通过ImageDrawer.js插件,你可以制作在页面中绘制图片的动态过程,你可以控制绘制动画的持续时间等参数,非常有趣. 效果展示       源码下载 使用方法 使用该动态绘制图片插件需要在页面中引入imagedrawer.css,jquery和imagedrawer.js文件. <link rel="stylesheet" href="css/imagedrawer.css"

  • jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】

    本文实例讲述了jQuery插件FusionCharts绘制的3D双柱状图效果.分享给大家供大家参考,具体如下: 1.3D双柱状图页面源码如下 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Con

  • jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】

    本文实例讲述了jQuery插件HighCharts实现的2D对数饼图效果.分享给大家供大家参考,具体如下: 1.实例代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>HighCharts 2D对数轴饼图</title> <script type="text/javascript" src="js/jqu

  • jQuery插件echarts实现的多折线图效果示例【附demo源码下载】

    本文实例讲述了jQuery插件echarts实现的多折线图效果.分享给大家供大家参考,具体如下: 1.问题背景: 设计一个折线图,折线图展示苹果.香蕉的销售量 2.实现代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>echarts-多折线图</title> <script type="text/javascript&qu

  • jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】

    本文实例讲述了jQuery插件echarts实现的多柱子柱状图效果.分享给大家供大家参考,具体如下: 1.问题背景: 利用ECharts制作一个多柱子柱状图,其中数据源模拟动态获取 2.实现源码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>echarts-多柱子柱状图</title> <script type="text/

  • jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】

    本文实例讲述了jQuery插件FusionCharts绘制的3D环饼图效果.分享给大家供大家参考,具体如下: 1.index.html页面: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Con

  • jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】

    本文实例讲述了jQuery插件HighCharts绘制的基本折线图效果.分享给大家供大家参考,具体如下: 1. 实例源码: <!DOCTYPE html> <html> <head> <title>HighCharts基本折线图</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-w

随机推荐