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 相关文章推荐
学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点)
Mar 10 Javascript
JavaScript中的细节分析
Jun 30 Javascript
jquery 提交值不为空的元素示例代码
May 10 Javascript
javascript根据像素点取位置示例
Jan 27 Javascript
JavaScript forEach()遍历函数使用及介绍
Jul 08 Javascript
jquery实现Li滚动时滚动条自动添加样式的方法
Aug 10 Javascript
jQuery判断元素是否显示 是否隐藏的简单实现代码
May 19 Javascript
javascript 小数乘法结果错误的处理方法
Jul 28 Javascript
angular和BootStrap3实现购物车功能
Jan 25 Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
Apr 22 Javascript
JS实现数据动态渲染的竖向步骤条
Jun 24 Javascript
如何用JS实现网页瀑布流布局
Apr 24 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
PHP开发框架总结收藏
2008/04/24 PHP
PHP URL路由类实例
2013/11/12 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
php获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
PHP机器学习库php-ml的简单测试和使用方法
2017/07/14 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
JavaScript中链式调用之研习
2011/04/07 Javascript
asp.net 30分钟掌握无刷新 Repeater
2011/09/16 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
探寻JavaScript中this指针指向
2016/04/23 Javascript
jQuery中的通配符选择器使用总结
2016/05/30 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
浅谈jQuery双事件多重加载的问题
2016/10/05 Javascript
AngularJS开发教程之控制器之间的通信方法分析
2016/12/25 Javascript
JavaScript实现经典排序算法之插入排序
2016/12/28 Javascript
JS中的phototype详解
2017/02/04 Javascript
Bootstrap响应式表格详解
2017/05/23 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
vue实现的双向数据绑定操作示例
2018/12/04 Javascript
使用Vue父子组件通信实现todolist的功能示例代码
2019/04/11 Javascript
JavaScript实现页面中录音功能的方法
2019/06/04 Javascript
微信小程序入口场景的问题集合与相关解决方法
2019/06/26 Javascript
解决layui table表单提示数据接口请求异常的问题
2019/09/24 Javascript
javascript设计模式 ? 职责链模式原理与用法实例分析
2020/04/16 Javascript
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
python使用sorted函数对列表进行排序的方法
2015/04/04 Python
Python修改MP3文件的方法
2015/06/15 Python
Python设计模式之组合模式原理与用法实例分析
2019/01/11 Python
Python中的random.uniform()函数教程与实例解析
2019/03/02 Python
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
2014年社区庆元旦活动方案
2014/03/08 职场文书
股东合作协议书
2014/04/14 职场文书
艺术设计专业毕业生推荐信
2014/07/08 职场文书
奖励申请报告范文
2015/05/15 职场文书
2015年行政管理人员工作总结
2015/10/15 职场文书