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


Posted in Javascript onJuly 18, 2017

本文为大家分享了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>

截图如下:

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

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

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

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

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

Javascript 相关文章推荐
JavaScript 模仿vbs中的 DateAdd() 函数的代码
Aug 13 Javascript
Jquery数独游戏解析(一)-页面布局
Nov 05 Javascript
jquery 隐藏与显示tr标签示例代码
Jun 06 Javascript
使用JavaScript 实现的人脸检测
Mar 24 Javascript
JS实现超简单的鼠标拖动效果
Nov 02 Javascript
在ASP.NET MVC项目中使用RequireJS库的用法示例
Feb 15 Javascript
浅析JavaScript函数的调用模式
Aug 10 Javascript
js仿腾讯QQ的web登陆界面
Aug 19 Javascript
js实现手机web图片左右滑动效果
Dec 29 Javascript
详解如何更好的使用module vuex
Mar 27 Javascript
记录一次开发微信网页分享的步骤
May 07 Javascript
利用PHP实现递归删除链表元素的方法示例
Oct 23 Javascript
vue深入解析之render function code详解
Jul 18 #Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
Jul 18 #jQuery
浅谈JS封闭函数、闭包、内置对象
Jul 18 #Javascript
iscroll实现下拉刷新功能
Jul 18 #Javascript
vue.js实现单选框、复选框和下拉框示例
Jul 18 #Javascript
vue2.0中vue-cli实现全选、单选计算总价格的实例代码
Jul 18 #Javascript
iscroll.js滚动加载实例详解
Jul 18 #Javascript
You might like
基于php和mysql的简单的dao类实现crud操作功能
2014/01/27 PHP
Smarty模板常见的简单应用分析
2016/11/15 PHP
php中的单引号、双引号和转义字符详解
2017/02/16 PHP
Laravel重定向,a链接跳转,控制器跳转示例
2019/10/22 PHP
清空上传控件input file的值
2010/07/03 Javascript
从jQuery.camelCase()学习string.replace() 函数学习
2011/09/13 Javascript
js 获取坐标 通过JS得到当前焦点(鼠标)的坐标属性
2013/01/04 Javascript
Javascript遍历Html Table示例(包括内容和属性值)
2014/07/08 Javascript
JQuery实现动态表格点击按钮表格增加一行
2014/08/24 Javascript
NodeJS中Buffer模块详解
2015/01/07 NodeJs
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
JavaScript调用传递变量参数的相关问题及解决办法
2015/11/01 Javascript
webpack 2的react开发配置实例代码
2017/07/28 Javascript
详解vue-meta如何让你更优雅的管理头部标签
2018/01/18 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
vue抽出组件并传值实例
2020/07/31 Javascript
JS实现超级好看的鼠标小尾巴特效
2020/12/01 Javascript
Win7上搭建Cocos2d-x 3.1.1开发环境
2014/07/03 Python
详解Python中的文本处理
2015/04/11 Python
python基于twisted框架编写简单聊天室
2018/01/02 Python
Python字典操作详细介绍及字典内建方法分享
2018/01/04 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
2019/06/18 Python
对Django url的几种使用方式详解
2019/08/06 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
Python谱减法语音降噪实例
2019/12/18 Python
在django admin中配置搜索域是一个外键时的处理方法
2020/05/20 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
澳大利亚先进的皮肤和激光诊所购物网站:Soho Skincare
2018/10/15 全球购物
ASICS印度官方网站:日本专业运动品牌
2020/06/20 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2013/01/18 面试题
秘书岗位职责
2013/11/18 职场文书
毕业生写求职信的要点
2014/03/04 职场文书
世界读书日的活动方案
2014/08/20 职场文书
大学生社会实践活动总结报告
2015/05/06 职场文书
2015人事行政工作总结范文
2015/05/21 职场文书