最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript 顏色梯度和漸變效果第2/3頁

 更新時(shí)間:2009年03月15日 21:15:07   作者:  
程序ColorGrads的作用是通過StartColor和EndColor生成顏色梯度集合。

【ColorTrans顏色漸變】

有了顏色梯度集合,只需要設(shè)個(gè)定時(shí)器把集合的值依次顯示就是一個(gè)漸變效果了。
這個(gè)漸變一般是分兩個(gè)步驟,分別是(FadeIn)和漸出(FadeOut)。
原理就是通過改變_index集合索引,漸入時(shí)逐漸變大,漸出時(shí)逐漸變小:
復(fù)制代碼 代碼如下:

//顏色漸入
FadeIn: function() {
this.Stop(); this._index++; this.SetColor();
if(this._index < this._colors.length - 1){
this._timer = setTimeout(Bind(this, this.FadeIn), this.Speed);
}
},
//顏色漸出
FadeOut: function() {
this.Stop(); this._index--; this.SetColor();
if(this._index > 0){
this._timer = setTimeout(Bind(this, this.FadeOut), this.Speed);
}
},

在SetColor設(shè)置樣式程序中,通過CssColor來設(shè)置要修改的樣式屬性,例如字體顏色是"color",背景色是"backgroundColor":
復(fù)制代碼 代碼如下:

var color = this._colors[Math.min(Math.max(0, this._index), this._colors.length - 1)];
this._obj.style[this.CssColor] = "rgb(" + color[0] + "," + color[1] + "," + color[2] + ")";

由于顏色集合是根據(jù)開始顏色、結(jié)束顏色和步數(shù)生成的,所以如果要修改這些屬性必須重新生成過集合。
Reset程序就是用來修改這些屬性并重新生成集合的,集合重新生成后索引也要設(shè)回0:
復(fù)制代碼 代碼如下:

//修改顏色后必須重新獲取顏色集合
color = Extend({ StartColor: this._startColor, EndColor: this._endColor, Step: this._step }, color || {});
//設(shè)置屬性
this._grads.StartColor = this._startColor = color.StartColor;
this._grads.EndColor = this._endColor = color.EndColor;
this._grads.Step = this._step = color.Step;
//獲取顏色集合
this._colors = this._grads.Create();
this._index = 0;

使用技巧
在顏色漸變菜單中,并沒有使用鏈接標(biāo)簽a,原因是a的偽類的顏色并不能直接用js來修改(除非改class)。
暫時(shí)沒想到很好的方法,只好用onclick跳轉(zhuǎn)代替了。
在測(cè)試過程中還發(fā)現(xiàn)一個(gè)關(guān)于數(shù)組的問題,在ie和ff運(yùn)行alert([,,].length)會(huì)分別顯示3和2。
最后一個(gè)元素不寫的話ff就會(huì)忽略這個(gè)元素,只要寫的話就不會(huì)忽略即使是undefined和null,看了下文檔也找到原因。
所以這個(gè)情況還是插一個(gè)東西進(jìn)去,覺得不好看就new Array好了。
測(cè)試中還發(fā)現(xiàn)chrome(1.0.154.48)的map一個(gè)問題,map是js1.6的Array的方法,ff和chrome都支持(具體看這里)。
在ff中[,,1].map(function(){return 0})返回的是[0,0,0],但chrome卻返回[,,0]。
即在chrome中如果元素是空(不包括null和undefined)的話就一律返回空,用new Array來創(chuàng)建也一樣。
感覺這樣不太合理,應(yīng)該以后會(huì)改進(jìn)吧。
使用說明 
復(fù)制代碼 代碼如下:

ColorGrads只有3個(gè)屬性設(shè)置:
StartColor: "#fff",//開始顏色
EndColor: "#000",//結(jié)束顏色
Step: 20//漸變級(jí)數(shù)
設(shè)置好屬性后用Create生成集合就行了。

ColorTrans只要一個(gè)參數(shù),要實(shí)現(xiàn)漸變的對(duì)象,可設(shè)置以下屬性:
StartColor: "",//開始顏色
EndColor: "#000",//結(jié)束顏色
Step: 20,//漸變級(jí)數(shù)
Speed: 20,//漸變速度
CssColor: "color"http://設(shè)置屬性(Scripting屬性)
如果不設(shè)置StartColor會(huì)自動(dòng)使用CurrentStyle獲取的樣式值。
其中StartColor、EndColor和Step在實(shí)例化后要重新設(shè)置的話需要用Reset來設(shè)置。

程序代碼
ColorGrads部分:
復(fù)制代碼 代碼如下:

var ColorGrads = function(options){
this.SetOptions(options);
this.StartColor = this.options.StartColor;
this.EndColor = this.options.EndColor;
this.Step = Math.abs(this.options.Step);
};
ColorGrads.prototype = {
//設(shè)置默認(rèn)屬性
SetOptions: function(options) {
this.options = {//默認(rèn)值
StartColor: "#fff",//開始顏色
EndColor: "#000",//結(jié)束顏色
Step: 20//漸變級(jí)數(shù)
};
Extend(this.options, options || {});
},
//獲取漸變顏色集合
Create: function() {
var colors = [],
startColor = this.GetColor(this.StartColor),
endColor = this.GetColor(this.EndColor),
stepR = (endColor[0] - startColor[0]) / this.Step,
stepG = (endColor[1] - startColor[1]) / this.Step,
stepB = (endColor[2] - startColor[2]) / this.Step;
//生成顏色集合
for(var i = 0, n = this.Step, r = startColor[0], g = startColor[1], b = startColor[2]; i < n; i++){
colors.push([r, g, b]); r += stepR; g += stepG; b += stepB;
}
colors.push(endColor);
//修正顏色值
return Map(colors, function(x){ return Map(x, function(x){
return Math.min(Math.max(0, Math.floor(x)), 255);
});});
},
//獲取顏色數(shù)據(jù)
GetColor: function(color) {
if(/^#[0-9a-f]{6}$/i.test(color))
{//#rrggbb
return Map([color.substr(1, 2), color.substr(3, 2), color.substr(5, 2)],
function(x){ return parseInt(x, 16); }
)
}
else if(/^#[0-9a-f]{3}$/i.test(color))
{//#rgb
return Map([color.substr(1, 1), color.substr(2, 1), color.substr(3, 1)],
function(x){ return parseInt(x + x, 16); }
)
}
else if(/^rgb(.*)$/i.test(color))
{//rgb(n,n,n) or rgb(n%,n%,n%)
return Map(color.match(/\d+(\.\d+)?\%?/g),
function(x){ return parseInt(x.indexOf("%") > 0 ? parseFloat(x, 10) * 2.55 : x, 10); }
)
}
else
{//color
var mapping = {"red":"#FF0000"};//略
color = mapping[color.toLowerCase()];
if(color){
return Map([color.substr(1, 2), color.substr(3, 2), color.substr(5, 2)],
function(x){ return parseInt(x, 16); }
)
}
}
}
};

相關(guān)文章

  • 淺析JavaScript中的平穩(wěn)退化(graceful degradation)

    淺析JavaScript中的平穩(wěn)退化(graceful degradation)

    所謂平穩(wěn)退化,就是指可以讓訪問者在瀏覽器不支持javascript或者禁用了JavaScript的時(shí)候依舊可以順利的瀏覽你的網(wǎng)頁,下文給大家簡單介紹了js中的平穩(wěn)退化,感興趣的朋友一起看看吧
    2017-07-07
  • js實(shí)現(xiàn)本地時(shí)間同步功能

    js實(shí)現(xiàn)本地時(shí)間同步功能

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)本地時(shí)間同步功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 原生JS forEach()和map()遍歷的區(qū)別、兼容寫法及jQuery $.each、$.map遍歷操作

    原生JS forEach()和map()遍歷的區(qū)別、兼容寫法及jQuery $.each、$.map遍歷操作

    這篇文章主要介紹了原生JS forEach()和map()遍歷的區(qū)別、兼容寫法及jQuery $.each、$.map遍歷操作,結(jié)合實(shí)例形式分析了JS使用forEach()和map()以及jQuery使用$.each、$.map進(jìn)行遍歷操作相關(guān)技巧與操作注意事項(xiàng),需要的朋友可以參考下
    2019-02-02
  • JS截取字符串常用方法整理及使用示例

    JS截取字符串常用方法整理及使用示例

    截取字符串的方法有很多,在使用過程中根據(jù)自己的實(shí)際需求進(jìn)行選擇,下面整理了一些常用的方法及使用示例,感興趣的朋友可以了解下
    2013-10-10
  • JavaScript自動(dòng)內(nèi)存管理與垃圾回收策略詳細(xì)分析講解

    JavaScript自動(dòng)內(nèi)存管理與垃圾回收策略詳細(xì)分析講解

    JS的垃圾回收機(jī)制是為了以防內(nèi)存泄漏,內(nèi)存泄漏的含義就是當(dāng)已經(jīng)不需要某塊內(nèi)存時(shí)這塊內(nèi)存還存在著,垃圾回收機(jī)制就是間歇的不定期的尋找到不再使用的變量,并釋放掉它們所指向的內(nèi)存。因?yàn)閮?nèi)存的大小是有限的,所以當(dāng)內(nèi)存不再需要的時(shí)候,我們需要對(duì)其進(jìn)行釋放
    2023-01-01
  • JS根據(jù)當(dāng)天不同時(shí)間顯示不同廣告的代碼

    JS根據(jù)當(dāng)天不同時(shí)間顯示不同廣告的代碼

    這篇文章主要介紹了JS根據(jù)當(dāng)天不同的時(shí)間段顯示不同廣告的代碼,可以精確到小時(shí)當(dāng)然如果分鐘都可以判斷出來,需要的朋友可以參考下
    2023-02-02
  • 微信小程序?qū)崿F(xiàn)五子棋游戲

    微信小程序?qū)崿F(xiàn)五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • TableSort.js表格排序插件使用方法詳解

    TableSort.js表格排序插件使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了TableSort.js表格排序插件的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • 支持移動(dòng)端原生js輪播圖

    支持移動(dòng)端原生js輪播圖

    這篇文章主要介紹了支持移動(dòng)端原生js輪播圖的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • JavaScript如何刪除對(duì)象的某個(gè)屬性詳析

    JavaScript如何刪除對(duì)象的某個(gè)屬性詳析

    這篇文章主要給大家介紹了關(guān)于JavaScript如何刪除對(duì)象的某個(gè)屬性的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05

最新評(píng)論

新野县| 宣威市| 崇阳县| 许昌市| 连城县| 万荣县| 彰化市| 仁布县| 汤阴县| 宁德市| 佛冈县| 集贤县| 青海省| 天全县| 彰武县| 上犹县| 边坝县| 张家港市| 邮箱| 海兴县| 芜湖县| 始兴县| 砚山县| 安丘市| 普宁市| 云霄县| 大新县| 肥乡县| 鸡泽县| 屯门区| 天祝| 太谷县| 宁城县| 泰和县| 延津县| 乌兰察布市| 上栗县| 富锦市| 中阳县| 仁布县| 宜黄县|