當(dāng)前位置:軟件學(xué)堂 > 資訊首頁 > 網(wǎng)絡(luò)編程 > 編程其他 > 利用JS代碼實(shí)現(xiàn)文本鏈接的漸變效果

利用JS代碼實(shí)現(xiàn)文本鏈接的漸變效果

2012/10/29 16:00:57作者:佚名來源:網(wǎng)絡(luò)

移動端

【實(shí)例名稱】

文本鏈接的漸變效果

【實(shí)例描述】

漸變效果屬于頁面的特效.可以通過一些鏈接或圖像的漸變.增強(qiáng)用戶的視覺體驗。本例學(xué)習(xí)如何實(shí)現(xiàn)文本鏈接的漸變。

【實(shí)例代碼】

<html xmlns="http://www.w3.org/1999/xhtml" > <head>     <title>無標(biāo)題頁-學(xué)無憂(yzddtk.cn)</title> <script language="javascript"> //內(nèi)部變量 startColor = "#671700"; // 定義鏈接顏色 endColor = "#D8D1C5";   // 定義要漸變到最后的顏色 stepIn = 17; stepOut = 23; autoFade = true;       //定義是否讓所有的文本鏈接自動漸變 sloppyClass = false;   //特殊樣式 hexa = new makearray(16); for(var i = 0; i < 10; i++)     hexa[i] = i; hexa[10]="a"; hexa[11]="b"; hexa[12]="c"; hexa[13]="d"; hexa[14]="e"; hexa[15]="f"; //定義窗體事件 document.onmouseover = domouseover; document.onmouseout = domouseout; //初始設(shè)置 startColor = dehexize(startColor.toLowerCase()); endColor = dehexize(endColor.toLowerCase()); var fadeId = new Array();

function dehexize(Color) {  var colorArr = new makearray(3);  for (i=1; i<7; i++){   for (j=0; j<16; j++){    if (Color.charAt(i) == hexa[j]){     if (i%2 !=0)      colorArr[Math.floor((i-1)/2)]=eval(j)*16;     else      colorArr[Math.floor((i-1)/2)]+=eval(j);    }   }  }  return colorArr; } //鼠標(biāo)移動到鏈接時的顏色變換 function domouseover() {   if(document.all){    var srcElement = event.srcElement;    if ((srcElement.tagName == "A" && autoFade) || srcElement.className == "fade" || (sloppyClass && srcElement.className.indexOf("fade") != -1))         fade(startColor,endColor,srcElement.uniqueID,stepIn);         } } //鼠標(biāo)移走時的顏色變換 function domouseout() {   if (document.all){    var srcElement = event.srcElement;     if ((srcElement.tagName == "A" && autoFade) || srcElement.className == "fade" || (sloppyClass && srcElement.className.indexOf("fade") != -1)) fade(endColor,startColor,srcElement.uniqueID,stepOut);     } } function makearray(n) //定義數(shù)組 {     this.length = n;     for(var i = 1; i <= n; i++)         this[i] = 0;     return this; } //考慮到顏色的16進(jìn)制表示方法,實(shí)現(xiàn)轉(zhuǎn)換 function hex(i) {     if (i < 0)         return "00";     else if (i > 255)         return "ff";     else        return "" + hexa[Math.floor(i/16)] + hexa[i%16]; } //定義顏色的方法 function setColor(r, g, b, element) {       var hr = hex(r); var hg = hex(g); var hb = hex(b);       element.style.color = "#"+hr+hg+hb; } //實(shí)現(xiàn)顏色漸變的關(guān)鍵方法 function fade(s,e, element,step) {  var sr = s[0]; var sg = s[1]; var sb = s[2];  var er = e[0]; var eg = e[1]; var eb = e[2];    if (fadeId[0] != null && fade[0] != element){   setColor(sr,sg,sb,eval(fadeId[0]));   var i = 1;   while(i < fadeId.length){    clearTimeout(fadeId[i]);    i++;    }   }     for(var i = 0; i <= step; i++) {      fadeId[i+1] = setTimeout("setColor(Math.floor(" +sr+ " *(( " +step+ " - " +i+ " )/ " +step+ " ) + " +er+ " * (" +i+ "/" +    step+ ")),Math.floor(" +sg+ " * (( " +step+ " - " +i+ " )/ " +step+ " ) + " +eg+ " * (" +i+ "/" +step+    ")),Math.floor(" +sb+ " * ((" +step+ "-" +i+ ")/" +step+ ") + " +eb+ " * (" +i+ "/" +step+ ")),"+element+");",i*step);   }  fadeId[0] = element; } </script> </head> <body>

需要在body中添加一個文本鏈接,代碼如下所示: <a href="http://www.google.com">最可愛的文本鏈接</a>

<br />        <p>         調(diào)試其他進(jìn)程的能力賦予您極廣泛的權(quán)力,這是無法通過其他途經(jīng)獲得的,在進(jìn)行遠(yuǎn)程調(diào)試時更是如此。惡意的調(diào)試器可能對正在調(diào)試的計算機(jī)造成大范圍的損害。因此,對可能進(jìn)行調(diào)試的人要有所限制。有關(guān)更多信息,請參見<a            >遠(yuǎn)程調(diào)試權(quán)限</a>。</p>     <p>         但是,許多開發(fā)人員沒有意識到安全威脅也可以從相反的方向產(chǎn)生。調(diào)試對象進(jìn)程中的惡意代碼可能危害調(diào)試計算機(jī)的安全:有許多必須防范的不道德的安全利用。</p>     <h1 >         安全性最佳做法</h1>   </body> </html>

【運(yùn)行效果】

運(yùn)行效果

【難點(diǎn)剖析】

本例的重點(diǎn)有3處:判斷頁面中的鏈接、定時變換顏色和顏色RGB的隨機(jī)值。本例只對鏈接實(shí)現(xiàn)漸變,所以當(dāng)鼠標(biāo)移動時,需要判斷指定的元素是否是鏈接,這通過“srcElement.tagName”=="A"”判斷。定時變換顏色是使用定時器結(jié)合代碼中提供的”setColor”方法實(shí)現(xiàn)。顏色RGB值的獲取非常關(guān)鍵,由于RGB是一個16進(jìn)制的表示方法。所以代碼中還使用了Math對蟓,并利用“Math.floor”來獲取除法運(yùn)算后的整數(shù)部分。

【源碼下載】

如果你不愿復(fù)制代碼及提高代碼準(zhǔn)確性,你可以點(diǎn)擊:文本鏈接的漸變效果 進(jìn)行本實(shí)例源碼下載 

標(biāo)簽: JS代碼  鏈接