基于jquery打造的百分比动态色彩条插件


Posted in Javascript onSeptember 19, 2012

以前没写过jquery插件,在开发这个时,写一下代码,又看一下jquery插件的定义(如何开发之类的东东),来来去去的。

之所以要写这个插件,主要是为了往后的项目中方便实现这类型的功能,在之前做问卷调查那个应用中,就用到这个来显示结果,但当时开发时并不用是插件的,一大堆代码,看也烦,用起来很麻烦(当时就调了一个上午)。

还好,这个功能比较简单,正好合适新手写插件。

具体的效果如图:

基于jquery打造的百分比动态色彩条插件

这个也算是简单的比例图吧。
插件的具体的代码如下:

; (function ($) { 
$.fn.percentbar = function (o) { 
var options1 = $.extend({ 
percent:[],//比例数组,如:[0.5,0.4,0.6] 长度大于1时,按顺序发配比例 
bar_bgcolor:'#EFEFEF',//色彩条的背景颜色 
bar_bordercolor:'#E2E2E2',//色彩条的边框颜色 
bar_borderwidth:1,//色彩条的边框宽度 
width:250,//色彩条的宽度 
height:14,//色彩条的高度 
callback:function(){}//l回调函数(色彩条显示完后) 
},o); 
var g=this.length; 
var styleData=InitColor(); 
$(this).css({ "background": "none repeat scroll 0 0 #EFEFEF", "border": "1px solid #E2E2E2" ,"height": options1.height+"px","width": options1.width+"px","background-color":options1.bar_bgcolor,"border-color":options1.bar_bordercolor,"border-width":options1.bar_borderwidth+"px"}); 
$(this).each(function(index, element) { 
$(element).append(" <p style=\"float: left; margin: 0;padding: 0;\"><span style=\"float: left;height: "+options1.height+"px;overflow: hidden;background-color:"+styleData[index]+";width:0px\"></span></p>"); 
if(g==index+1) 
{ 
$(element).find("span").animate({ width: Math.round(options1.percent[index] * options1.width) }, "slow",options1.callback) 
}else 
{ 
$(element).find("span").animate({ width: Math.round(options1.percent[index] * options1.width) }, "slow") 
} 
}); 
//初始化色彩条 
function InitColor() { 
var o = []; 
var n = ["#5dbc5b", "#6c81b6", "#9eb5f0", "#a5cbd6", "#aee7f8", "#c2f263", "#d843b3", "#d8e929", "#e58652", "#e7ab6d", "#ee335f", "#fbe096", "#ffc535"]; 
var q = n.slice(); 
for (var p = 0, l = g; p < l; p++) { 
var k = Math.floor(Math.random() * q.length); 
o.push(q[k]); 
q.splice(k, 1); 
if (q.length == 0) { 
q = n.slice() 
} 
} 
return o 
} 
} 
})(jQuery);

本来想把css独立出来的,但最后还是直接出到jquery插件里了,这样使用起来更加方便的说。

例:

$(".good").percentbar({ percent: [0.5, 0.4], width: 500 }); 
<div class=".good"><div> 
<div class=".good"><div>

方法参数说明:
percent:比例数组(占的比例),如:[0.5,0.4,0.6] 长度大于1时,按顺序发配比例
bar_bgcolor:色彩条的背景颜色
bar_bordercolor:色彩条的边框颜色
bar_borderwidth:色彩条的边框宽度
width:色彩条的宽度
height:色彩条的高度
callback:回调函数(色彩条显示完后)
Javascript 相关文章推荐
用javascript实现计算两个日期的间隔天数
Aug 14 Javascript
各种常用浏览器getBoundingClientRect的解析
May 21 Javascript
使用dynatrace-ajax跟踪JavaScript的性能
Apr 12 Javascript
js加强的经典分页实例
Mar 15 Javascript
JavaScript构造函数详解
Dec 27 Javascript
jquery实现手机端单店铺购物车结算删除功能
Feb 22 Javascript
vue.js学习之UI组件开发教程
Jul 03 Javascript
react学习笔记之state以及setState的使用
Dec 07 Javascript
Angular实现的日程表功能【可添加及隐藏显示内容】
Dec 27 Javascript
详解Angular结合zTree异步加载节点数据
Jan 20 Javascript
vue+element树组件 实现树懒加载的过程详解
Oct 21 Javascript
JS PHP字符串截取函数实现原理解析
Aug 29 Javascript
jQuery Ajax提交表单查询获得数据实例代码
Sep 19 #Javascript
基于JQuery的多标签实现代码
Sep 19 #Javascript
一样的table?不一样的table(可编辑状态table)
Sep 19 #Javascript
jQuery学习笔记 获取jQuery对象
Sep 19 #Javascript
jQuery学习笔记 更改jQuery对象
Sep 19 #Javascript
jQuery学习笔记 操作jQuery对象 文档处理
Sep 19 #Javascript
jQuery学习笔记 操作jQuery对象 属性处理
Sep 19 #Javascript
You might like
SONY ICF-SW55的电路分析
2021/03/02 无线电
ThinkPHP写第一个模块应用
2012/02/20 PHP
ThinkPHP3.1的Widget新用法
2014/06/19 PHP
基于PHP实现假装商品限时抢购繁忙的效果
2015/10/16 PHP
网站被黑的假象--ARP欺骗之页面中加入一段js
2007/05/16 Javascript
捕获和分析JavaScript Error的方法
2014/03/25 Javascript
jquery实现表格本地排序的方法
2015/03/11 Javascript
jQuery实现商品活动倒计时
2015/10/16 Javascript
限制复选框最多选择项的实现代码
2016/05/30 Javascript
JS实现的简单图片切换功能示例【测试可用】
2017/02/14 Javascript
详谈js模块化规范
2017/07/07 Javascript
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
Vue resource三种请求格式和万能测试地址
2018/09/26 Javascript
微信小程序仿抖音视频之整屏上下切换功能的实现代码
2020/05/24 Javascript
Vue如何将页面导出成PDF文件
2020/08/17 Javascript
[58:37]Serenity vs Fnatic 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
微信跳一跳python辅助软件思路及图像识别源码解析
2018/01/04 Python
对python多线程中Lock()与RLock()锁详解
2019/01/11 Python
django将网络中的图片,保存成model中的ImageField的实例
2019/08/07 Python
python实现PID算法及测试的例子
2019/08/08 Python
详解python中的模块及包导入
2019/08/30 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
2020/03/11 Python
Pyspark读取parquet数据过程解析
2020/03/27 Python
PyQt5 QDockWidget控件应用详解
2020/08/12 Python
HTML5: Web 标准最巨大的飞跃
2008/10/17 HTML / CSS
俄罗斯第一家篮球店:StreetBall
2020/07/30 全球购物
Kipling澳洲官网:购买凯浦林包包
2020/12/17 全球购物
会计出纳岗位职责
2013/12/25 职场文书
六十岁生日答谢词
2014/01/10 职场文书
幼师求职自荐信
2014/05/31 职场文书
合伙经营协议书范本
2014/09/13 职场文书
2014年团支部年度工作总结
2014/12/24 职场文书
户外活动总结
2015/02/04 职场文书
数学教师个人总结
2015/02/06 职场文书
六一儿童节致辞稿(3篇)
2019/07/11 职场文书
python中如何对多变量连续赋值
2021/06/03 Python