基于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 兼容鼠标滚轮事件
Apr 07 Javascript
jquery提示效果实例分析
Nov 25 Javascript
js判断所有表单项不为空则提交表单的实现方法
Sep 09 Javascript
javascript的document中的动态添加标签实现方法
Oct 24 Javascript
js仿京东轮播效果 选项卡套选项卡使用
Jan 12 Javascript
Angular HMR(热模块替换)功能实现方法
Apr 04 Javascript
vue实现form表单与table表格的数据关联功能示例
Jan 29 Javascript
基于vue-cli3创建libs库的实现方法
Dec 04 Javascript
webpack打包优化的几个方法总结
Feb 10 Javascript
详细分析JavaScript中的深浅拷贝
Sep 17 Javascript
详解vue中v-for的key唯一性
May 15 Vue.js
Vue3如何理解ref toRef和toRefs的区别
Feb 18 Vue.js
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
多人战的战术与战略
2020/03/04 星际争霸
ThinkPHP的URL重写问题
2014/06/22 PHP
php获得文件大小和文件创建时间的方法
2015/03/13 PHP
thinkPHP模板引擎用法示例
2016/12/08 PHP
2017年最好用的9个php开发工具推荐(超好用)
2017/10/23 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
Javascript之文件操作
2007/03/07 Javascript
IE8 兼容性问题(属性名区分大小写)
2009/06/04 Javascript
由JavaScript中call()方法引发的对面向对象继承机制call的思考
2011/09/12 Javascript
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
sencha ext js 6 快速入门(必看)
2016/06/01 Javascript
js实现简单的碰壁反弹效果
2016/08/30 Javascript
通过示例彻底搞懂js闭包
2017/08/10 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
vue实现搜索功能
2019/05/28 Javascript
Vue 图片压缩并上传至服务器功能
2020/01/15 Javascript
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
python实现的各种排序算法代码
2013/03/04 Python
详细介绍Python语言中的按位运算符
2013/11/26 Python
python进阶教程之异常处理
2014/08/30 Python
解决python3爬虫无法显示中文的问题
2018/04/12 Python
Python 实现向word(docx)中输出
2020/02/13 Python
HTML5新增的标签和属性归纳总结
2018/05/02 HTML / CSS
HTML5拖拽的简单实例
2016/05/30 HTML / CSS
美国唇部护理专家:Sara Happ
2019/06/19 全球购物
Groupon荷兰官方网站:高达70%的折扣
2019/11/01 全球购物
瑞典在互联网上最大的宠物商店:Animail
2020/10/31 全球购物
档案管理员岗位职责
2013/12/01 职场文书
法律六进活动方案
2014/03/13 职场文书
校园环保建议书
2014/05/14 职场文书
人事任命书范文
2014/06/04 职场文书
北京颐和园导游词
2015/01/30 职场文书
跑出一片天观后感
2015/06/08 职场文书
将MySQL的表数据全量导入clichhouse库中
2022/03/21 MySQL