四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

JavaScript 顏色梯度和漸變效果第1/3頁(yè)

程序說(shuō)明
【ColorGrads顏色梯度】
程序ColorGrads的作用是通過(guò)StartColor和EndColor生成顏色梯度集合。
顏色都可以用紅(r)、綠(g)、藍(lán)(b)三個(gè)顏色來(lái)表示。
程序中先通過(guò)GetColor把一般的顏色表示形式轉(zhuǎn)化成一個(gè)用紅(r)、綠(g)、藍(lán)(b)三個(gè)顏色值作元素的集合。
那就首先要知道有什么顏色表示形式,從w3c的Colors部分可以知道有以下形式:
關(guān)鍵詞模式:
em { color: red }
RGB顏色模式:
em { color: #f00 }
em { color: #ff0000 }
em { color: rgb(255,0,0) }
em { color: rgb(100%, 0%, 0%) }
以上都是表示同一種顏色(紅色)。
獲取顏色屬性的形式在ie和ff并不同,ff統(tǒng)一返回RGB顏色模式的第三種形式,ie則按照設(shè)置時(shí)的形式返回。
先說(shuō)說(shuō)RGB顏色模式,前兩種比較常用應(yīng)該都明白他們的區(qū)別吧,它用的是16進(jìn)制表示形式,而我們想要10進(jìn)制的。
把一個(gè)16進(jìn)制表示的字符轉(zhuǎn)成10進(jìn)制數(shù)字,一般用parseInt,在substr截取字符之后就可以用parseInt轉(zhuǎn)換。
對(duì)于#ff0000這個(gè)形式可以這樣轉(zhuǎn)換:
復(fù)制代碼 代碼如下:
return Map([color.substr(1, 2), color.substr(3, 2), color.substr(5, 2)],
function(x){ return parseInt(x, 16); }
)

parseInt的第二個(gè)參數(shù)就是第一個(gè)參數(shù)的進(jìn)制值。
對(duì)于#f00形式,跟上一個(gè)差不多,只是轉(zhuǎn)換之前要先換成完整表示形式:
復(fù)制代碼 代碼如下:
return Map([color.substr(1, 1), color.substr(2, 1), color.substr(3, 1)],
function(x){ return parseInt(x + x, 16); }
)

后面兩種可能用的就比較少了,一個(gè)用10進(jìn)制的rgb顏色值表示,另一個(gè)用百分比來(lái)表示。
ff嚴(yán)格按照那樣的格式來(lái)表示,而ie就“放松”很多,例如:
ie可以允許數(shù)字百分比混用,ff不可以;
ff必須有逗號(hào)分隔,ie可以只用空格分隔;
當(dāng)然我們使用時(shí)最好是按照w3c的標(biāo)準(zhǔn)來(lái)設(shè)置了。
ps:那個(gè)DHTML 手冊(cè)上寫(xiě)的 EM { color: rgb 1.0 0.0 0.0 } 根本不能用的,不要被誤導(dǎo)了。
對(duì)這個(gè)形式,程序用正則取得數(shù)值,如果有%就根據(jù)百分比計(jì)算出對(duì)應(yīng)數(shù)值:
復(fù)制代碼 代碼如下:
return Map(color.match(//d+(/./d+)?/%?/g),
function(x){ return parseInt(x.indexOf("%") > 0 ? parseFloat(x, 10) * 2.55 : x, 10); }
)

而關(guān)鍵詞大家都很熟悉,要轉(zhuǎn)化卻很麻煩,因?yàn)闆](méi)有一定規(guī)律只能一個(gè)一個(gè)對(duì)應(yīng):
復(fù)制代碼 代碼如下:
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); }
)
}

在Create創(chuàng)建顏色集合程序中獲得開(kāi)始顏色和結(jié)束顏色的數(shù)據(jù)后,再根據(jù)Step(多少步)就可以獲得步長(zhǎng)了:
復(fù)制代碼 代碼如下:
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;

再根據(jù)步長(zhǎng)生成集合:
復(fù)制代碼 代碼如下:
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);

正確的顏色值是在0到255之間的,而且是不帶小數(shù)的,所以最好修正一下:
復(fù)制代碼 代碼如下:
return Map(colors, function(x){ return Map(x, function(x){
return Math.min(Math.max(0, Math.floor(x)), 255);
});});

JavaScript技術(shù)JavaScript 顏色梯度和漸變效果第1/3頁(yè),轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 佐山彩香| 寻梦环游记英文| 夜半2点钟| 韩国最火主播朴曼妮| 爱在西元前简谱| 性视频在线播放| 广西百色地图| 卢靖姗老公是谁| 王艺潼| 尤克里里指弹谱| 免费看污视频在线观看| 拇指姑娘故事完整版| 《平凡之路》电影| 麻辣隔壁第一季| 大海中的船歌词歌谱| 丰满美女| 荒唐的山区母子| 诺曼瑞杜斯| 藏文作文| 6套电影频道节目表| 中川翔子| 荒野求生21天美国原版免费播放| 感谢有你简谱| 李彦萱| 卖梦的两人| 陈一龙是哪部电视剧| 韩国xxxxxxxxxxxx| 电视剧《老兵》| 电视剧《反击》主要演员| 美国派7| 辛鹏| 飞虎神鹰1-42集免费| 罗斯福游戏| 青草国产视频| 香水有毒微电影无删减完整版| 处女膜视频| 泰星mike| 电影《donselya》在线观看| 涩涩免费| 爱情秘密| 今天是你的生日合唱谱二声部|