在仪表盘的任务增多同时,列表页的百分比圆环或圆饼也随之增多,于是顺手在仪表盘的基础上,封装了一个小小的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>
截图如下:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# jquery
# canvaspercent.js
# 百分比
# js canvas仿支付宝芝麻信用分仪表盘
# ECharts仪表盘实例代码(附源码下载)
# Javascript highcharts 饼图显示数量和百分比实例代码
# JavaScript根据数据生成百分比图和柱状图的实例代码
# 使用javascript获取flash加载的百分比的实现代码
# javascript 计算两个整数的百分比值
# javascript下正则匹配百分比的代码
# js canvas实现适用于移动端的百分比仪表盘dashboard
# 您的
# 不支持
# 基础上
# 中有
# 对其
# 几张
# 装了
# 一个小小
# 多处
# 大家多多
# cur_line_w
# screen
# width
# cur_type
# cur_fill_color
# attr
# cur_cir_color
# cur_cir_color_op
# fill_color
# line_w
相关文章:
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
企业微网站怎么做,公司网站和公众号有什么区别?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
音乐网站服务器如何优化API响应速度?
如何自定义建站之星网站的导航菜单样式?
利用JavaScript实现拖拽改变元素大小
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
如何通过VPS搭建网站快速盈利?
建站之星安装失败:服务器环境不兼容?
建站168自助建站系统:快速模板定制与SEO优化指南
完全自定义免费建站平台:主题模板在线生成一站式服务
实例解析Array和String方法
如何用搬瓦工VPS快速搭建个人网站?
头像制作网站在线制作软件,dw网页背景图像怎么设置?
枣阳网站制作,阳新火车站打的到仙岛湖多少钱?
如何快速搭建二级域名独立网站?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
,购物网站怎么盈利呢?
如何通过可视化优化提升建站效果?
外贸公司网站制作哪家好,maersk船公司官网?
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
建站与域名管理如何高效结合?
导航网站建站方案与优化指南:一站式高效搭建技巧解析
高防服务器:AI智能防御DDoS攻击与数据安全保障
Python多线程使用规范_线程安全解析【教程】
建站主机选哪种环境更利于SEO优化?
建站之星2.7模板:企业网站建设与h5定制设计专题
公众号网站制作网页,微信公众号怎么制作?
宁波自助建站系统如何快速打造专业企业网站?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
建站之星代理如何获取技术支持?
如何零成本快速生成个人自助网站?
建站之星在线版空间:自助建站+智能模板一键生成方案
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
如何用PHP快速搭建CMS系统?
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
个人摄影网站制作流程,摄影爱好者都去什么网站?
如何通过万网虚拟主机快速搭建网站?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
建站之星如何优化SEO以实现高效排名?
广东企业建站网站优化与SEO营销核心策略指南
如何在七牛云存储上搭建网站并设置自定义域名?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
如何快速搭建高效WAP手机网站吸引移动用户?
临沂网站制作公司有哪些,临沂第四中学官网?
*请认真填写需求信息,我们会在24小时内与您取得联系。