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

本文为大家分享了canvas实现适用于移动端的百分比仪表盘,供大家参考,具体内容如下

由于最近工作中,经常会遇到一些动态百分比的仪表盘,一开始都是用图片样式方式实现;

但是随着越来越多的项目,决定用canvas绘制一个简易的仪表盘,便于以后项目中直接使用;

现版本只是书写为方法形式,也许之后会有时间对其优化为插件形式。

简简单单而已,以下直接给出代码和执行过程中的三张截图:

<!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>canvas绘制简易百分比仪表盘dashboard(建议最好用于移动端)</title>
  <style type="text/css">
    div{margin:1rem;background:#eee;padding:.3rem; position:relative }
    div canvas{background:#cacaca;
      -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 id="myCanvas1" data-percent="80">
    您的浏览器不支持canvas标签。
  </canvas>
  <span style="display:block;position:absolute;top:.94rem;left:.3rem;width:2rem;text-align:center;font-size:.5rem;font-family:microsoft Yahei" id="dushu" >0</span>
</div> 

<script type="text/javascript" src="../js/flexible.js"></script>
<script type="text/javascript">
  var pper=0;
  var pper_interal;
  var dushu=document.getElementById('dushu'); 

  var aaa=drawCanvanPercent('myCanvas1','rem',2,'#0e9cfa',0.2,'#fff'); 

  function drawCanvanPercent(ele_id,dw,cir_r,cir_color,line_w,fill_color){
    if(dw=="rem"){
      cir_r=cir_r*(window.screen.width/10);
      line_w=line_w*(window.screen.width/10);
    }
    var canvas = document.getElementById(ele_id);
    var circle = {
      r : cir_r/2,   //圆的半径
      per : canvas.getAttribute('data-percent'),   //百分比分子
      color : cir_color,   //圆的颜色
      lineWidth : line_w   //圆的颜色
    };
    canvas.width=canvas.height=circle.r*2;
    canvas.style.borderRadius="50%";
    if(canvas.getContext){
      var ctx2 = canvas.getContext("2d");
      ctx2.fillStyle = fill_color;
      ctx2.arc(circle.r, circle.r, circle.r-circle.lineWidth/2, 0, Math.PI*2, false);
      ctx2.fill();
      var ctx = canvas.getContext("2d");
      pper_interal= setInterval(function () {
        drawMove(ctx,circle);
      }, 10);
    }
  } 

  function drawMove(ctx,circle){
    if(pper>=circle.per){
      pper=circle.per;
      clearTimeout(pper_interal);
    }else{
      pper++;
    }
    dushu.innerText=pper+'%';
    ctx.beginPath();
    ctx.strokeStyle = circle.color;
    ctx.lineWidth=circle.lineWidth;
    ctx.arc(circle.r, circle.r, circle.r, 0, Math.PI*(pper/100)*360/180, false);
    ctx.stroke();
  }
  </script> 

</body>
</html>

截图如下:

建议:不要因为简单而不去动手,多动手多思考,你会进步的。

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

时间: 2017-07-16

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

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

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

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

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

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

使用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

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

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

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 highcharts 饼图显示数量和百分比实例代码

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

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

JavaScript计算两个日期时间段内日期的方法

本文实例讲述了JavaScript计算两个日期时间段内日期的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: /*************************  * 计算两个日期时间段内所有日期  *   * @param value1  *            开始日期 YYYY-MM-DD  * @param value2  *            结束日期  * return 日期数组  */  function dataScope(value1, value2

php计算两个整数的最大公约数常用算法小结

本文实例讲述了php计算两个整数的最大公约数常用算法.分享给大家供大家参考.具体如下: 复制代码 代码如下: <?php //计时,返回秒 function  microtime_float () {     list( $usec ,  $sec ) =  explode ( " " ,  microtime ());     return ((float) $usec  + (float) $sec ); } /////////////////////////////////

Javascript计算两个marker之间的距离(Google Map V3)

Google Map V3 javascript计算两个marker之间的距离 做地图开发,最常用到的就是marker一些操作和交互.简单介绍一下,两个marker之间的距离计算. google map api 很方便的 只要是常用的 基本上都有接口. 1.创建两个marker点 复制代码 代码如下: var oldMarker = new google.maps.Marker({ position: new google.maps.LatLng("31.95678", "1

javaScript 计算两个日期的天数相差(示例代码)

一:计算两个日期相差的天数 比如:   str1  =  "2002-01-20"   str2  =  "2002-10-11"  怎样用javaScript计算出str1与str2之间相差的天数?  复制代码 代码如下: <html>  <head>  <meta  http-equiv="Content-Type"  content="text/html;  charset=gb2312"&

JavaScript计算出两个数的差值

本文实例为大家分享了JavaScript计算两个数差的具体代码,供大家参考,具体内容如下 需求 在两个输入框中输入两个数字,点击按钮的时候,计算出两个数字的差并且显示到id为result的div中. 实现代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"

用javascript实现计算两个日期的间隔天数

ASP 里面计算两个时间的差距可以 DateDiff,但 javascript 里面没有,需要手写函数. js 里面居然可以直接 Date1-Date2,而且还是转换为毫秒计算时间差的. 复制代码 代码如下: // 计算两个日期的间隔天数  function DateDiff(sDate1, sDate2){ //sDate1和sDate2是2002-12-18格式   var aDate, oDate1, oDate2, iDays   aDate = sDate1.split("-"

java计算百分比值的方法

本文实例讲述了java计算百分比值的方法.分享给大家供大家参考.具体实现方法如下: public class Test1 { public static String myPercent(int y, int z) { String baifenbi = "";// 接受百分比的值 double baiy = y * 1.0; double baiz = z * 1.0; double fen = baiy / baiz; // NumberFormat nf = NumberForm

JavaScript中判断为整数的多种方式及保留两位小数的方法

一.使用取余运算符判断 任何整数都会被1整除,即余数是0.利用这个规则来判断是否是整数. function isInteger(obj) { return obj%1 === 0 } isInteger(3) // true isInteger(3.3) // false 以上输出可以看出这个函数挺好用,但对于字符串和某些特殊值显得力不从心 isInteger('') // true isInteger('3') // true isInteger(true) // true isInteger

PHP 计算两个特别大的整数实例代码

废话不多说了,具体代码如下所示: function getIntAdd($a,$b){ $c = ''; $bCount = strlen($b); $aCount = strlen($a); $count = max($bCount,$aCount); $aDiff = $count - $aCount; $bDiff = $count - $bCount; for($i = $count - 1;$i >= 0;$i--){ $aVal = $count - $i <= $aCount ?