對於本站的導航欄,想做點什麼。所以,選擇了用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
* @URL http://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();
//得到每個rgb增長的方向。true代表增加,false代表減少
var isTrue = new Object();
var colorArray = new Array();
var i = 0;//數組下標
beginColor = getRGB(bColor);//改變成ogj類型
endColor = getRGB(eColor);//改變成ogj類型
curColor = getRGB(bColor);
rate = getRate(beginColor,endColor,r);
isTrue = getIsTrue(beginColor,endColor)