jQuery與js實(shí)現(xiàn)顏色漸變的方法
本文實(shí)例講述了jQuery與js實(shí)現(xiàn)顏色漸變的方法。分享給大家供大家參考,具體如下:
1.目的
本來想的是 提示用戶應(yīng)該點(diǎn)某個(gè)按鈕 這個(gè)功能,就想著讓這個(gè)按鈕div的邊框變成醒目的顏色然后逐漸變白。
在網(wǎng)上搜了搜,本來想使用jQuery的animate,后來發(fā)現(xiàn)這個(gè)方法只能用來進(jìn)行長(zhǎng)度的漸變。還有就是需要下載jQuery的顏色漸變插件來實(shí)現(xiàn),感覺挺麻煩的,就自己用土辦法實(shí)現(xiàn)了。
2.原理
先獲得初始顏色的rgb,再獲得終止顏色的rgb,使用rgb三個(gè)數(shù)字的差值,從初始顏色的rgb逐漸過渡到終止顏色的rgb。
3.代碼
獲得顏色rgb的代碼如下:
//將輸入的顏色字符串轉(zhuǎn)換成十進(jìn)制數(shù)組 function getData(color) { var re = RegExp; if (/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.test(color)) { //#rrggbb return [parseInt(re.$1,16),parseInt(re.$2,16),parseInt(re.$3,16)]; } else if (/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.test(color)) { //#rgb return [parseInt(re.$1+re.$1,16),parseInt(re.$2+re.$2,16),parseInt(re.$3+re.$3,16)]; } else if (/^rgb(.*),(.*),(.*)$/i.test(color)) { //rgb(n,n,n) or rgb(n%,n%,n%) if(re.$1.indexOf("%")>-1){ return [parseInt(parseFloat(re.$1, 10) * 2.55), parseInt(parseFloat(re.$2, 10) * 2.55), parseInt(parseFloat(re.$3, 10) * 2.55)]; }else{ return [parseInt(re.$1),parseInt(re.$2),parseInt(re.$3)]; } } }
方法中沒有隊(duì)color的驗(yàn)證之類的方法,見諒。傳入的參數(shù)color格式可以是:"#1ba3e1"、"#f0e"、"rgb(200,50,100)"、"rgb(20%,80%,50%)"這四種格式。返回的是rgb三個(gè)數(shù)值組成的數(shù)組。
然后進(jìn)行顏色的漸變:
(function($){$.fn.shade = function(prop,color1,color2,mills){ var count = mills/200; var data1 = getData(color1); var data2 = getData(color2); var red = data1[0],green = data1[1],blue = data1[2]; var r = (data2[0]-data1[0])/count,g = (data2[1]-data1[1])/count,b = (data2[2]-data1[2])/count; obj_temp = $(this); for(var i=1;i<count+1;i++){ setTimeout("$(obj_temp).css('"+prop+"','rgb("+parseInt(red+r*i+0.5)+","+ parseInt(green+g*i+0.5)+","+parseInt(blue+b*i+0.5)+")');", i*200); } }})(jQuery);
這里我在jQuery中定義了一個(gè)shade函數(shù),參數(shù):對(duì)象漸變的屬性(如border-color)、起始顏色、終止顏色、變色所需時(shí)間。我規(guī)定了200ms進(jìn)行一次變色(可以自行調(diào)整),使用setTimeout函數(shù)每200ms執(zhí)行一次變化。(我起初想使用while()或者遞歸來實(shí)現(xiàn)每隔一段時(shí)間執(zhí)行一次變化,但js中的線程不像java中用Thread.sleep()就可以等待,所以不得不先將要運(yùn)行的變色代碼全部扔到setTimeout中,等待依次執(zhí)行。)
代碼中使用
$("#more").shade("border-color","#1ba3e1","#fff",2000);
就可以實(shí)現(xiàn)了。
注:運(yùn)行此函數(shù)需要定義一個(gè)obj_temp的全局變量。
如果運(yùn)行出現(xiàn)BUG自行調(diào)試。。。Thanks for watching.
PS:這里再為大家推薦幾款本站的相關(guān)在線工具:
在線RGB、HEX顏色代碼生成器:
http://tools.jb51.net/color/rgb_color_generator
RGB顏色查詢對(duì)照表_顏色代碼表_顏色的英文名稱大全:
http://tools.jb51.net/color/jPicker
在線網(wǎng)頁調(diào)色板工具:
http://tools.jb51.net/color/color_picker
在線顏色選擇器工具/RGB顏色查詢對(duì)照表:
http://tools.jb51.net/color/colorpicker
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript動(dòng)畫特效與技巧匯總》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- jquery實(shí)現(xiàn)的隨機(jī)多彩tag標(biāo)簽隨機(jī)顏色和字號(hào)大小效果
- jQuery插件echarts設(shè)置折線圖中折線線條顏色和折線點(diǎn)顏色的方法
- jQuery實(shí)現(xiàn)的文字hover顏色漸變效果實(shí)例
- jquery實(shí)現(xiàn)實(shí)時(shí)改變網(wǎng)頁字體大小、字體背景色和顏色的方法
- JQuery實(shí)現(xiàn)動(dòng)態(tài)適時(shí)改變字體顏色的方法
- jQuery實(shí)現(xiàn)鼠標(biāo)滑過Div層背景變顏色的方法
- jQuery獲取樣式中顏色值的方法
- jQuery獲取隨機(jī)顏色的實(shí)例代碼
相關(guān)文章
Js保留小數(shù)點(diǎn)的4種效果實(shí)現(xiàn)代碼分享
jvascript 計(jì)算保留小數(shù)點(diǎn)一兩位,有四種不同效果,非常適用于商城類網(wǎng)站,需要的朋友可以參考下2014-04-04JavaScript預(yù)解析及相關(guān)技巧分析
這篇文章主要介紹了JavaScript預(yù)解析及相關(guān)技巧,結(jié)合實(shí)例形式分析了JavaScript與解析的原理,步驟與相關(guān)技巧,需要的朋友可以參考下2016-04-04JavaScript實(shí)現(xiàn)的簡(jiǎn)單加密解密操作示例
這篇文章主要介紹了JavaScript實(shí)現(xiàn)的簡(jiǎn)單加密解密操作,涉及javascript基于charCodeAt與fromCharCode的字符串編碼與解碼操作相關(guān)使用技巧,需要的朋友可以參考下2018-06-06使用js Math.random()函數(shù)生成n到m間的隨機(jī)數(shù)字
何使用js生成n到m間的隨機(jī)數(shù)字,主要目的是為后期的js生成驗(yàn)證碼做準(zhǔn)備,Math.random()函數(shù)返回0和1之間的偽隨機(jī)數(shù)2014-10-10微信小程序?qū)崿F(xiàn)文章關(guān)注功能詳細(xì)流程
在社交小程序里有個(gè)常見的場(chǎng)景是關(guān)注功能,我們本篇以關(guān)注已經(jīng)發(fā)布的文章為例,講解一下關(guān)注功能如何實(shí)現(xiàn)2022-08-08深入學(xué)習(xí)JavaScript ES8中的函數(shù)式編程
函數(shù)式編程已經(jīng)成為現(xiàn)代JavaScript開發(fā)中的一種主要范式,它提供了一種更清晰、更模塊化、更可維護(hù)的代碼編寫方式,本文將深入探討ES8中的一些關(guān)鍵特性,并演示如何使用這些特性進(jìn)行函數(shù)式編程實(shí)踐,有需要的可以參考下2023-09-09