對於本站的導覽欄,想做點什麼。所以,選擇了用js對導覽列的顏色做了梯度的變化處理。
起初,覺得用opacity屬性(透明度)來改變顏色的梯度變化。不過,這樣會出現一個問題。
每一個導航標籤用的是[li],當滑鼠浮動到標籤上時,透過onmouseover()立即改變[li]的className,並用setInterval()來使其opacity(透明度)由0變到1 .不過,當滑鼠離開時,對於[li]標籤的顏色恢復的處理貌似麻煩了許多。所以,很快就放棄了這個做法,換種思路。
到百度上一搜,看到了一篇很好的文章,地址為http://www.cnblogs.com/cloudgamer/archive/
2009/03/11/color.html。隨之,進行了簡化,找到了解決的方法。
不如先通過兩個顏色值,例如"#FFFFFF"、"#CCCCCC",其中一個為起始顏色,另一個為終止顏色。透過處理,取得兩種顏色在變化時的各種顏色字串,並且字串的個數,即獲取的頻率可以調節。傳回某個數組變量,程式碼如下:
/* *
* @Desc 該檔案是改變顏色梯度的函式庫- colorGrad.js
* @Author GenialX
* @Date 2013.05.30
* @QQ 2252065614
/www.ihuxu.com
*/
/**
* 改變顏色的入口函數
* beginColor/endColor皆為形如#FFFFFF的十六進位的字串,rate為漸進的速度
* @return colorArray數組形如#FFFFFF的字符串數組
* 呼叫格式changeColor("#FFFFFF","#000000",100);
*/
function getColorArray(bColor,eColor,r){
//過渡中的顏色值,例如#FFFFFF
var curColor = new Object();
var beginColor = new Object();
var endColor = new Object();
var rate = new Object();
//得到每個rgbb成長的方向。 true代表增加,false代表減少
var isTrue = new Object();
var colorArray = new Array();
var i = 0;//陣列下標
beginor = getRGB(bColor);//改為ogj型別
endColor = getRGB(eColor);//改成ogj型別
curColor = getRGB(bColor);
rate = getRate(beginor,endColor,Coloror,endColor,Colginor,endColorr) ;
isTrue = getIsTrue(beginColor,endColor)