在仪表盘的任务增多同时,列表页的百分比圆环或圆饼也随之增多,于是顺手在仪表盘的基础上,封装了一个小小的jquery插件(jq-canvaspercent.js),暂且版本1.0吧,到以后业务的变化在对其进行功能拓展;
jq-canvaspercent.js代码比较简单,以下直接给出插件代码和几张截图:
属性、参数
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,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,Math.PI*(percent/100)*360/180,false);
ctx.stroke();
}
});
};
})(jQuery);
调用方式:
<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"/>
demo01
第一章:进度 80%
第一章:进度 50%
第一章:进度 75%
第一章:进度 35%
第一章:进度 95%
第一章:进度 13%
<script type="text/javascript" src="js/flexible.js">
<script type="text/javascript" src="js/jquery-1.7.2.min.js">
<script type="text/javascript" src="js/jq-canvaspercent.js">
<script type="text/javascript">
$(function(){
$('.perCanvas').drawCanvasPercent();
});