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 Date对象使用总结
May 14 Javascript
JQuery小知识
Oct 15 Javascript
javascript 保存文件到本地实现方法
Nov 29 Javascript
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
Mar 08 Javascript
JavaScript获得url查询参数的方法
Jul 02 Javascript
JavaScript如何自定义trim方法
Jul 28 Javascript
JS实现的添加弹出层并完成锁屏操作示例
Apr 07 Javascript
bootstrap table单元格新增行并编辑
May 19 Javascript
详解Node.js中path模块的resolve()和join()方法的区别
Oct 29 Javascript
echarts实现折线图的拖拽效果
Dec 19 Javascript
Vue检测屏幕变化来改变不同的charts样式实例
Oct 26 Javascript
交互式可视化js库gojs使用介绍及技巧
Feb 18 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切割页面div内容的实现代码分享
2012/07/31 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
PHP 实现判断用户是否手机访问
2015/01/21 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
smarty模板引擎之内建函数用法
2015/03/30 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
2007/02/03 Javascript
Javascript Math ceil()、floor()、round()三个函数的区别
2010/03/09 Javascript
js性能优化 如何更快速加载你的JavaScript页面
2012/03/17 Javascript
easyui Draggable组件实现拖动效果
2015/08/19 Javascript
浅析Node.js 中 Stream API 的使用
2015/10/23 Javascript
详解Vue-基本标签和自定义控件
2017/03/24 Javascript
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
jQuery实现全选、反选和不选功能
2017/08/16 jQuery
Nodejs实现爬虫抓取数据实例解析
2018/07/05 NodeJs
vue生成token并保存到本地存储中
2018/07/17 Javascript
JS/jQuery实现获取时间的方法及常用类完整示例
2019/03/07 jQuery
Vue Cli 3项目使用融云IM实现聊天功能的方法
2019/04/19 Javascript
优雅地使用loading(推荐)
2019/04/20 Javascript
如何利用Node.js与JSON搭建简单的动态服务器
2020/06/16 Javascript
pycharm 使用心得(五)断点调试
2014/06/06 Python
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
详解Python爬虫的基本写法
2016/01/08 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
用python一行代码得到数组中某个元素的个数方法
2019/01/28 Python
对Django项目中的ORM映射与模糊查询的使用详解
2019/07/18 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
2020/10/27 Python
快速实现一个简单的canvas迷宫游戏的示例
2018/07/04 HTML / CSS
公务员职业生涯规划书范文  
2014/01/19 职场文书
三查三看党性分析材料
2014/02/18 职场文书
本科毕业自我鉴定
2014/03/20 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
2014年客户经理工作总结
2014/11/20 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
MySQL 覆盖索引的优点
2021/05/19 MySQL
DQL数据查询语句使用示例
2022/12/24 MySQL