基于jquery實(shí)現(xiàn)彩色投票進(jìn)度條代碼解析
一、需求
如下圖
重點(diǎn)是要實(shí)現(xiàn)進(jìn)度條。
二、分析
原理:動態(tài)設(shè)置<p>的子元素<span>的寬度值。
1、簡單的雛形
假設(shè)只有一個進(jìn)度條,如下,我們只需要知道p元素的寬度,span元素的百分比,相乘即得到span的寬度,瀏覽器加載時動態(tài)設(shè)置span的寬度即可實(shí)現(xiàn)進(jìn)度條的效果。
<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>
2、投票進(jìn)度條實(shí)現(xiàn)過程
第一步:
結(jié)構(gòu)如下
<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和背景色,就可以出現(xiàn)進(jìn)度條的效果。這一步用js實(shí)現(xiàn)。
第二步、js設(shè)置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(); } /*根據(jù)百分比計(jì)每個算span的實(shí)際寬度*/ function calWidth(){ var arr=[]; for(var i=0;i<percentArr.length;i++){ var tempLength=percentArr[i]*longWidth; arr.push(tempLength); } return arr; } /*將全部span存為一個數(shù)組*/ 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元素設(shè)置寬度*/ 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}; })(); /*調(diào)用*/ Vote.ListShow.init( { id:'appVoteBox', width:200-2 , percent:[0.02,0.61,0.36,0.13,0.3], }); Vote.ListShow.set(); </script>
效果:
第三步,js設(shè)置span的背景色
第二步中的背景色都是如下設(shè)置為一樣。
$(spanArr[i]).css({'background-color':"#c2f263"});
現(xiàn)在隨機(jī)生成背景色,做一個彩色的進(jìn)度條。
<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(); } /*根據(jù)百分比計(jì)每個算span的實(shí)際寬度*/ function calWidth(){ var arr=[]; for(var i=0;i<percentArr.length;i++){ var tempLength=percentArr[i]*longWidth; arr.push(tempLength); } return arr; } /*將全部span存為一個數(shù)組*/ 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是顏色數(shù)組,隨機(jī)選擇length種顏色返回*/ function genColor() { var o = []; var n = ["#5dbc5b", "#6c81b6", "#9eb5f0", "#a5cbd6", "#aee7f8", "#c2f263", "#d843b3", "#d8e929", "#e58652", "#e7ab6d", "#ee335f", "#fbe096", "#ffc535"]; //彩色進(jìn)度條 var colorsArr = n.slice(); for (var i = 0;i < percentArr.length; i++){ //Math.random()返回0.0 ~ 1.0 之間的一個偽隨機(jī)數(shù)。 //Math.floor()向下取整 var k = Math.floor(Math.random()* colorsArr.length); o.push(colorsArr[k]); //取完一種顏色后就從顏色數(shù)組中刪除 colorsArr.splice(k, 1); if (colorsArr.length == 0){ colorsArr = n.slice()} } return o; } /*每個span元素設(shè)置寬度*/ 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}; })(); /*調(diào)用*/ Vote.ListShow.init( { id:'appVoteBox', width:200-2 , percent:[0.02,0.61,0.36,0.13,0.3], }); Vote.ListShow.set(); </script>
最終效果:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- PHP+MySql+jQuery實(shí)現(xiàn)的"頂"和"踩"投票功能
- 基于jQuery實(shí)現(xiàn)仿搜狐辯論投票動畫代碼(附源碼下載)
- jquery彩色投票進(jìn)度條簡單實(shí)例演示
- 基于PHP+jQuery+MySql實(shí)現(xiàn)紅藍(lán)(頂踩)投票代碼
- jQuery基于ajax實(shí)現(xiàn)帶動畫效果無刷新柱狀圖投票代碼
- PHP結(jié)合jQuery實(shí)現(xiàn)紅藍(lán)投票功能特效
- 基于jquery的多彩百分比 動態(tài)進(jìn)度條 投票效果顯示效果實(shí)現(xiàn)代碼
- 基于jQuery的投票系統(tǒng)顯示結(jié)果插件
- 基于Jquery與WebMethod投票功能實(shí)現(xiàn)代碼
相關(guān)文章
jquery+php隨機(jī)生成紅包金額數(shù)量代碼分享
這篇文章主要介紹了jquery+php隨機(jī)生成紅包金額數(shù)量實(shí)現(xiàn)代碼,紅包數(shù)量與金錢可以自己設(shè)定,很實(shí)用的代碼,推薦給大家,有需要的小伙伴可以參考下。2015-08-08IE7瀏覽器窗口大小改變事件執(zhí)行多次bug及IE6/IE7/IE8下resize問題
通過本篇文章主要給大家介紹IE7瀏覽器窗口大小改變事件執(zhí)行多次bug及IE6/IE7/IE8下resize問題,需要的朋友可以一起來學(xué)習(xí)2015-08-08jQuery獲取某天的農(nóng)歷日期并判斷是否除夕或新年的方法
這篇文章主要介紹了jQuery獲取某天的農(nóng)歷日期并判斷是否除夕或新年的方法,涉及jQuery針對日期與時間的相關(guān)操作技巧,需要的朋友可以參考下2016-03-03jQuery設(shè)置指定網(wǎng)頁元素寬度和高度的方法
這篇文章主要介紹了jQuery設(shè)置指定網(wǎng)頁元素寬度和高度的方法,涉及jQuery操作width及height方法的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03Easy UI動態(tài)樹點(diǎn)擊文字實(shí)現(xiàn)展開關(guān)閉功能
這篇文章主要介紹了Easy UI動態(tài)樹點(diǎn)擊文字實(shí)現(xiàn)展開關(guān)閉功能,需要的朋友可以參考下2017-09-09jQuery實(shí)現(xiàn)錨點(diǎn)scoll效果實(shí)例分析
這篇文章主要介紹了jQuery實(shí)現(xiàn)錨點(diǎn)scoll效果,實(shí)例分析了錨點(diǎn)scoll效果的實(shí)現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03圖片放大鏡jquery.jqzoom.js使用實(shí)例附放大鏡圖標(biāo)
這篇文章主要介紹了圖片放大鏡jquery.jqzoom.js的使用另附放大鏡圖標(biāo),需要的朋友可以參考下2014-06-06