對(duì)于本站的導(dǎo)航欄,想做點(diǎn)什么。所以,選擇了用js對(duì)導(dǎo)航欄的顏色做了梯度的變化處理。
起初,覺得用opacity屬性(透明度)來改變顏色的梯度變化。不過,這樣會(huì)出現(xiàn)一個(gè)問題。
每一個(gè)導(dǎo)航標(biāo)簽用的是[li],當(dāng)鼠標(biāo)浮動(dòng)到標(biāo)簽上時(shí),通過onmouseover()立即改變[li]的className,并用setInterval()來使其opacity(透明度)由0變到1.不過,當(dāng)鼠標(biāo)離開時(shí),對(duì)于[li]標(biāo)簽的顏色恢復(fù)的處理貌似麻煩了許多。所以,很快就放棄了這個(gè)做法,換種思路。
到百度上一搜,看到了一篇很好的文章,地址為
2009/03/11/color.html。隨之,進(jìn)行了簡(jiǎn)化,找到了解決的辦法。
不如首先通過兩個(gè)顏色值,比如"#FFFFFF"、"#CCCCCC",其中一個(gè)為起始顏色,另一個(gè)為終止顏色。通過處理,獲取兩種顏色在變化時(shí)的各種顏色字符串,并且字符串的個(gè)數(shù),即獲取的頻率可以調(diào)節(jié)。返回給某個(gè)數(shù)組變量,代碼如下:
復(fù)制代碼 代碼如下:
/**
* @Desc 該文件是改變顏色梯度的庫 - colorGrad.js
* @Author GenialX
* @Date 2013.05.30
* @QQ 2252065614
* @URL
*/
/**
* 改變顏色的入口函數(shù)
* beginColor/endColor均為形如#FFFFFF的十六進(jìn)制的字符串,rate為漸變的速度
* @return colorArray數(shù)組 形如#FFFFFF的字符串?dāng)?shù)組
* 調(diào)用格式 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();
//得到每個(gè)rgb增長(zhǎng)的方向。true代表增加,false代表減少
var isTrue = new Object();
var colorArray = new Array();
var i = 0;//數(shù)組下標(biāo)
beginColor = getRGB(bColor);//改變成ogj類型
endColor = getRGB(eColor);//改變成ogj類型
curColor = getRGB(bColor);
rate = getRate(beginColor,endColor,r);
isTrue = getIsTrue(beginColor,endColor)
新聞熱點(diǎn)
疑難解答
圖片精選