jquery彩色投票进度条简单实例演示


Posted in Javascript onJuly 23, 2020

本文实例为大家分享了jquery实现彩色投票进度条的具体代码,供大家参考,具体内容如下

一、需求

如下图

jquery彩色投票进度条简单实例演示

重点是要实现进度条。

二、分析

html5新增及删除标签一文中提到过html5新增了progress标签。但是肯定有兼容性问题。生成环境不适用,所以要模拟实现。

原理:动态设置<p>的子元素<span>的宽度值。

1、简单的雏形

假设只有一个进度条,如下,我们只需要知道p元素的宽度,span元素的百分比,相乘即得到span的宽度,浏览器加载时动态设置span的宽度即可实现进度条的效果。

<style>
.long{width:100px;border:1px solid #7f7f7f;height:14px;background-color:#d6d6d6;}
.short{float:left;height:14px;background-color:#0FF;}
</style>

<body>
<P class="long"><span class="short"></span></P>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
var percent=0.5;
var longWidth=100;
var shortWidth=percent*longWidth;

$(".short").animate({width:shortWidth+"px"},'slow');

</script>
</body>

jquery彩色投票进度条简单实例演示

2、投票进度条实现过程

第一步:结构如下

<meta charset="utf-8">
<style>
/*样式重置*/
ul,h4,p{margin:0;padding:0;}
/*清除浮动*/
.clearfix:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0;}

body { font: 12px/1.5 arial, 宋体; }
html, body { color: #333333; }
/*投票css*/
.vote-box-list{border:1px solid red;position:absolute;}
.vote-box-list li{list-style:none;margin:10px 0;}
.vote-item-wrap h4,.vote-item-wrap .vnum{float:left;font-size:14px;font-weight:normal;line-height:16px;}
.vote-item-wrap p{float:left;height:14px;width:200px;border:1px solid #E2E2E2;background-color:#EFEFEF;margin:0 10px;}
.vote-item-wrap p span{float:left;height:14px;/*width:30px;background-color:#c2f263;*/}
</style>
<ul class="vote-box-list clearfix" id="appVoteBox">
 <li class="vl-item" id="voteItem0">
 <div class="vote-item-wrap clearfix">
 <h4>A:</h4>
 <p class="litem"><span></span></p>
 <span class="vnum">79(2%)</span>
 </div>
 </li>
 <li class="vl-item" id="voteItem1" >
 <div class="vote-item-wrap clearfix">
 <h4>B:</h4>
 <p class="litem"><span></span></p>
 <span class="vnum">1986(61%)</span>
 </div>
 </li>
 <li class="vl-item" id="voteItem2">
 <div class="vote-item-wrap clearfix">
 <h4>C:</h4>
 <p class="litem"><span></span></p>
 <span class="vnum">1153(36%)</span>
 </div>
 </li>
 <li class="vl-item" id="voteItem3" >
 <div class="vote-item-wrap clearfix">
 <h4>D:</h4>
 <p class="litem"><span></span></p>
 <span class="vnum">415(13%)</span>
 </div>
 </li>
 <li class="vl-item" id="voteItem4" >
 <div class="vote-item-wrap clearfix">
 <h4>E:</h4>
 <p class="litem"><span></span></p>
 <span class="vnum">89(3%)</span>
 </div>
 </li>
</ul>

给span增加一个width和背景色,就可以出现进度条的效果。这一步用js实现。

jquery彩色投票进度条简单实例演示

第二步、js设置span的宽度

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>

var Vote={};
Vote.ListShow=(function(){
 var longWidth;
 var percentArr=[];
 var shortWidth=[];
 var spanArr=[];
 
 /*初始化*/
 function init(o){
 voteId=o.id;
 longWidth=o.width;
 percentArr=o.percent;
 shortWidth=calWidth();
 spanArr=findSpans();
 }
 /*根据百分比计每个算span的实际宽度*/
 function calWidth(){
 var arr=[];
 for(var i=0;i<percentArr.length;i++){
 var tempLength=percentArr[i]*longWidth;
 arr.push(tempLength);
 }
 return arr;
 }
 /*将全部span存为一个数组*/
 function findSpans(){
 var litems=$("#"+voteId).find(".litem");
 var arr=[]
 for(var i=0;i<litems.length;i++){
 arr.push(litems[i].children[0]);
 }
 return arr;
 }
 /*每个span元素设置宽度*/
 function setWidth(){
 for(i=0;i<percentArr.length;i++){
 $(spanArr[i]).animate({width:shortWidth[i]+"px"},'slow');
 $(spanArr[i]).css({'background-color':"#c2f263"}); 
 }
 
 }
 return {init:init,set:setWidth};
})();

/*调用*/
Vote.ListShow.init(
{
 id:'appVoteBox',
 width:200-2 ,
 percent:[0.02,0.61,0.36,0.13,0.3],
});
Vote.ListShow.set();

</script>

效果:

jquery彩色投票进度条简单实例演示

第三步,js设置span的背景色

第二步中的背景色都是如下设置为一样。

$(spanArr[i]).css({'background-color':"#c2f263"}); 
 现在随机生成背景色,做一个彩色的进度条。
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>

var Vote={};
Vote.ListShow=(function(){
 var longWidth;
 var percentArr=[];
 var shortWidth=[];
 var spanArr=[];
 var colorArr=[];
 
 /*初始化*/
 function init(o){
 voteId=o.id;
 longWidth=o.width;
 percentArr=o.percent;
 shortWidth=calWidth();
 spanArr=findSpans();
 colorArr=genColor();
 }
 /*根据百分比计每个算span的实际宽度*/
 function calWidth(){
 var arr=[];
 for(var i=0;i<percentArr.length;i++){
 var tempLength=percentArr[i]*longWidth;
 arr.push(tempLength);
 }
 return arr;
 }
 /*将全部span存为一个数组*/
 function findSpans(){
 var litems=$("#"+voteId).find(".litem");
 var arr=[]
 for(var i=0;i<litems.length;i++){
 arr.push(litems[i].children[0]);
 }
 return arr;
 }
 /*o是颜色数组,随机选择length种颜色返回*/
 function genColor() { 
 var o = []; 
 var n = ["#5dbc5b", "#6c81b6", "#9eb5f0", "#a5cbd6", "#aee7f8", "#c2f263", "#d843b3", "#d8e929", "#e58652", "#e7ab6d", "#ee335f", "#fbe096", "#ffc535"]; //彩色进度条
 var colorsArr = n.slice(); 
 for (var i = 0;i < percentArr.length; i++){ 
 //Math.random()返回0.0 ~ 1.0 之间的一个伪随机数。
 //Math.floor()向下取整
 var k = Math.floor(Math.random()* colorsArr.length); 
 o.push(colorsArr[k]); 
 //取完一种颜色后就从颜色数组中删除
 colorsArr.splice(k, 1); 
 if (colorsArr.length == 0){ 
 colorsArr = n.slice()} 
 } 
 return o;
 } 
 /*每个span元素设置宽度*/
 function setWidth(){
 for(i=0;i<percentArr.length;i++){
 $(spanArr[i]).animate({width:shortWidth[i]+"px"},'slow');
 $(spanArr[i]).css({'background-color':colorArr[i]}); 
 }
 
 }
 return {init:init,set:setWidth};
})();

/*调用*/

Vote.ListShow.init(
{
 id:'appVoteBox',
 width:200-2 ,
 percent:[0.02,0.61,0.36,0.13,0.3],
});
Vote.ListShow.set();

</script>

最终效果:

jquery彩色投票进度条简单实例演示

以上就是彩色的进度条特效,特别适合用于投票,效果很明显,希望对大家的学习有所帮助,会喜欢上这个彩色进度条。

Javascript 相关文章推荐
jqGrid jQuery 表格插件测试代码
Aug 23 Javascript
js将long日期格式转换为标准日期格式实现思路
Apr 07 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
Nov 28 Javascript
javascript使用appendChild追加节点实例
Jan 12 Javascript
javascript异步编程代码书写规范Promise学习笔记
Feb 11 Javascript
Js调用Java方法并互相传参的简单实例
Aug 11 Javascript
js实现获取鼠标当前的位置
Dec 14 Javascript
JavaScript中offsetWidth的bug及解决方法
May 17 Javascript
Angular6 写一个简单的Select组件示例
Aug 20 Javascript
vuejs点击class变化的实例
Sep 05 Javascript
微信小程序下拉框组件使用方法详解
Dec 28 Javascript
vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题
Jul 31 Javascript
js生成随机数的过程解析
Nov 24 #Javascript
jquery制作图片时钟特效
Mar 30 #Javascript
jQuery实现Tab选项卡切换效果简单演示
Nov 23 #Javascript
JS鼠标拖拽实例分析
Nov 23 #Javascript
基于jQuery实现简单的折叠菜单效果
Nov 23 #Javascript
jquery无限级联下拉菜单简单实例演示
Nov 23 #Javascript
jquery实现图片放大镜功能
Nov 23 #Javascript
You might like
收音机频率指针指示不准确和灵敏度低问题
2021/03/02 无线电
PHP 文件缓存的性能测试
2010/04/25 PHP
jquery获取多个checkbox的值异步提交给php的方法
2015/06/24 PHP
List Installed Hot Fixes
2007/06/12 Javascript
jQuery 源代码显示控件 (Ajax加载方式).
2009/05/18 Javascript
Enter转换为Tab的小例子(兼容IE,Firefox)
2013/11/14 Javascript
引用外部脚本时script标签关闭的写法
2014/01/20 Javascript
JavaScript原型链示例分享
2014/01/26 Javascript
通过url查找a元素并点击
2014/04/09 Javascript
javascript中的throttle和debounce浅析
2014/06/06 Javascript
JavaScript实现SHA-1加密算法的方法
2015/03/11 Javascript
jquery事件绑定解绑机制源码解析
2016/09/19 Javascript
BootStrapTable 单选及取值的实现方法
2017/01/10 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
js input输入百分号保存数据库失败的解决方法
2018/05/26 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
2018/11/07 Javascript
node(koa2) web应用模块介绍详解
2019/03/29 Javascript
js DOM的事件常见操作实例详解
2019/12/16 Javascript
js实现网页随机验证码
2020/10/19 Javascript
[05:41]2014DOTA2西雅图国际邀请赛 小组赛7月10日TOPPLAY
2014/07/10 DOTA
Python随机生成彩票号码的方法
2015/03/05 Python
python 通过字符串调用对象属性或方法的实例讲解
2018/04/21 Python
python中正则表达式与模式匹配
2019/05/07 Python
python设置环境变量的原因和方法
2019/06/24 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
2020/06/02 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
使用CSS3制作一个简单的Chrome模拟器
2015/07/15 HTML / CSS
详解HTML5通讯录获取指定多个人的信息
2016/12/20 HTML / CSS
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
我爱我家教学反思
2014/05/01 职场文书
2015新年联欢晚会开场白
2014/12/14 职场文书
师德标兵事迹材料
2014/12/19 职场文书
司机岗位职责
2015/02/04 职场文书
原生CSS实现文字无限轮播的通用方法
2021/03/30 HTML / CSS
什么是动态刷新率DRR? Windows11动态刷新率功能介绍
2021/11/21 数码科技