JavaScript實(shí)現(xiàn)的鼠標(biāo)響應(yīng)顏色漸變效果完整實(shí)例
本文實(shí)例講述了JavaScript實(shí)現(xiàn)的鼠標(biāo)響應(yīng)顏色漸變效果。分享給大家供大家參考,具體如下:
運(yùn)行效果圖如下:
完整代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>顏色漸變實(shí)例</title> <script type="text/javascript"> //-------------------------------------------------------------------- //基礎(chǔ)類庫: //1.獲取對象: function $(id){ return typeof id=='string'?document.getElementById(id):id; } //2.添加事件監(jiān)聽: function addEventHandler(oTarget,sEventType,fnHandler){ if(oTarget.addEventListener){ oTarget.addEventListener(sEventType,fnHandler,false); }else if(oTarget.attachEvent){ oTarget.attachEvent("on"+sEventType,fnHandler); }else{ oTarget["on"+sEventType]=fnHandler; } } //3.自定"義產(chǎn)生對象"類: var Class={ Create:function(){ return function(){ this.initialize.apply(this,arguments); } } } //4.對象屬性合并: Object.extend=function(destination,source){ for(var property in source){ destination[property]=source[property]; } return destination; } //-------------------------------------------------------------------- var colorFade=Class.Create(); colorFade.prototype={ //1.類的初始化: initialize:function(obj,options){ this._obj=$(obj);//當(dāng)前要改變顏色的對象。 this._timer=null;//計(jì)時(shí)器。 this.SetOptions(options);//傳入的數(shù)組參數(shù)。 this.Steps=Math.abs(this.options.Steps); this.Speed=Math.abs(this.options.Speed); //this._colorArr:用來寄存當(dāng)前顏色的r.g.b信息。 this.StartColorArr=this._colorArr=this.getColorArr(this.options.StartColor); this.EndColorArr=this.getColorArr(this.options.EndColor); this.Background=this.options.Background; //從開始到結(jié)束,r.g.b三種原色漸變的梯度值(即,每次漸變要增加/減少的值)。 this._stepAddValueArr=[this.getColorAddValue(this.StartColorArr[0],this.EndColorArr[0]),this.getColorAddValue(this.StartColorArr[1],this.EndColorArr[1]),this.getColorAddValue(this.StartColorArr[2],this.EndColorArr[2])]; //設(shè)置對象顏色: this._setObjColor=this.Background?function(sColor){ this._obj.style.backgroundColor=sColor; }:function(sColor){ this._obj.style.color=sColor; }; this._setObjColor(this.options.StartColor); //為對象添加事件: var oThis=this; addEventHandler(this._obj,"mouseover", function(){ oThis.Fade(oThis.EndColorArr); } ); addEventHandler(this._obj,"mouseout",function(){ oThis.Fade(oThis.StartColorArr); }); }, /* 2.對象屬性初始化: */ SetOptions:function(options){ this.options={ StartColor: "#000000", EndColor: "#ffffff", Steps: 20,//漸變次數(shù) Speed: 20,//漸變速度,即每隔多少(Speed)毫秒漸變一次。 Background: true//是否為對象背景漸變。 } //合并屬性: Object.extend(this.options,options||{}); }, /* 3.得到某個(gè)顏色的"r.g.b"信息數(shù)組: sColor:被計(jì)算的顏色值,格式為"#ccc000"。 返回的一個(gè)數(shù)組。 */ getColorArr:function(sColor){ var curColor=sColor.replace("#",""); var r,g,b; if(curColor.length>3){//六位值 r=curColor.substr(0,2); g=curColor.substr(2,2); b=curColor.substr(4,2); }else{ r=curColor.substr(0,1); g=curColor.substr(1,1); b=curColor.substr(2,1); r+=r; g+=g; b+=b; } //返回“十六進(jìn)制”數(shù)據(jù)的“十進(jìn)制”值: return [parseInt(r,16),parseInt(g,16),parseInt(b,16)]; }, /* 4.得到當(dāng)前原色值(r.g.b)漸變的梯度值。 sRGB:開始顏色值(十進(jìn)制) eRGB:結(jié)束的顏色值(十進(jìn)制) */ getColorAddValue:function(sRGB,eRGB){ var stepValue=Math.abs((eRGB-sRGB)/this.Steps); if(stepValue>0&&stepValue<1){ stepValue=1; } return parseInt(stepValue); }, /* 5.得到當(dāng)前漸變顏色的"r.g.b"信息數(shù)組。 startColor:開始的顏色,格式為"#ccc000"; iStep:當(dāng)前漸變的級數(shù)(即當(dāng)前漸變的次數(shù))。 返回顏色值,如 #fff000。 */ getStepColor:function(sColor,eColor,addValue){ if(sColor==eColor){ return sColor; }else if(sColor<eColor){ return (sColor+addValue)>eColor?eColor:(sColor+addValue); }else if(sColor>eColor){ return (sColor-addValue)<eColor?eColor:(sColor-addValue); } }, /* 6.開始漸變: endColorArr:目標(biāo)顏色,為r.g.b信息數(shù)組。 */ Fade:function(endColorArr){ clearTimeout(this._timer); var er=endColorArr[0], eg=endColorArr[1], eb=endColorArr[2], r=this.getStepColor(this._colorArr[0],er,this._stepAddValueArr[0]), g=this.getStepColor(this._colorArr[1],eg,this._stepAddValueArr[1]), b=this.getStepColor(this._colorArr[2],eb,this._stepAddValueArr[2]); this._colorArr=[r,g,b]; this._setObjColor("#"+Hex(r) + Hex(g) + Hex(b)); if(r!=er||g!=eg||b!=eb){ var oThis=this; oThis._timer=setTimeout(function(){oThis.Fade(endColorArr)},oThis.Speed); } } } //返回16進(jìn)制數(shù) function Hex(i) { if (i < 0) return "00"; else if (i > 255) return "ff"; else { //十進(jìn)制 轉(zhuǎn)成 十六進(jìn)制: var str = "0" + i.toString(16); return str.substring(str.length - 2); } } </script> </head> <body> <div id="test" style="height:40px;width:200px;border:1px solid red;"> 嘻嘻! </div> <div id="test1" style="height:40px;width:200px;border:1px solid red;"> 呵呵! </div> <div id="test2" style="height:40px;width:200px;border:1px solid red;"> 哈哈! </div> </body> <script type="text/javascript"> var colorFade01=new colorFade("test",{StartColor:'#000000',EndColor:'#8AD4FF',Background:true}); var colorFade02=new colorFade("test",{StartColor:'#8AD4FF',EndColor:'#000000',Background:false}); var colorFade03=new colorFade("test1",{StartColor:'#000000',EndColor:'#8AD4FF',Background:true}); var colorFade04=new colorFade("test1",{StartColor:'#8AD4FF',EndColor:'#000000',Background:false}); var colorFade05=new colorFade("test2",{StartColor:'#000000',EndColor:'#8AD4FF',Background:true}); var colorFade06=new colorFade("test2",{StartColor:'#8AD4FF',EndColor:'#000000',Background:false}); </script> </html>
PS:這里再為大家推薦幾款網(wǎng)頁元素樣式相關(guān)工具供大家參考使用:
在線特效文字/彩色文字生成工具:
http://tools.jb51.net/aideddesign/colortext
Firefox的Linear Gradients (線性漸變)在線調(diào)試工具:
http://tools.jb51.net/aideddesign/moz_LinearGradients
webkit內(nèi)核safari/Chrome的Linear Gradients(線性漸變)在線調(diào)試工具
http://tools.jb51.net/aideddesign/webkit_LinearGradients
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript事件相關(guān)操作與技巧大全》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript動畫特效與技巧匯總》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計(jì)有所幫助。
- JS實(shí)現(xiàn)鼠標(biāo)滑過鏈接改變網(wǎng)頁背景顏色的方法
- 鼠標(biāo)選擇動態(tài)改變網(wǎng)頁背景顏色的JS代碼
- JS實(shí)現(xiàn)文字鏈接感應(yīng)鼠標(biāo)淡入淡出改變顏色的方法
- js隨機(jī)顏色代碼的多種實(shí)現(xiàn)方式
- JS實(shí)現(xiàn)隨機(jī)顏色的3種方法與顏色格式的轉(zhuǎn)化
- js獲取隨機(jī)顏色值的函數(shù)
- javascript生成隨機(jī)顏色示例代碼
- JavaScript隨機(jī)生成顏色的方法
- js實(shí)現(xiàn)點(diǎn)擊按鈕后給Div圖層設(shè)置隨機(jī)背景顏色的方法
- JavaScript實(shí)現(xiàn)鼠標(biāo)移入隨機(jī)變換顏色
相關(guān)文章
JavaScript運(yùn)動原理基礎(chǔ)知識詳解
這篇文章主要介紹了JavaScript運(yùn)動原理基礎(chǔ)知識詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04用javascript模仿ie的自動完成類似自動完成功的表單
最近在寫一個(gè)javascript框架,看見網(wǎng)上有不少自動完成功能的表單,于是用javascript寫了一個(gè),需要的朋友可以參考下2012-12-12php實(shí)例分享之實(shí)現(xiàn)顯示網(wǎng)站運(yùn)行時(shí)間
這篇文章主要介紹了php實(shí)現(xiàn)顯示網(wǎng)站運(yùn)行時(shí)間,需要的朋友可以參考下2014-05-05如何使用工具規(guī)范前端項(xiàng)目的commits與changelog技巧
這篇文章主要為大家介紹了如何使用工具規(guī)范前端項(xiàng)目的commits與changelog技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02OpenLayer實(shí)現(xiàn)自定義坐標(biāo)點(diǎn)的繪制
OpenLayers?是一個(gè)專為Web?GIS?客戶端開發(fā)提供的JavaScript?類庫包,用于實(shí)現(xiàn)標(biāo)準(zhǔn)格式發(fā)布的地圖數(shù)據(jù)訪問。本文將利用OpenLayer實(shí)現(xiàn)自定義坐標(biāo)點(diǎn)的繪制,感興趣的可以了解一下2022-04-04