天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

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

程序說明
【ColorGrads顏色梯度】
程序ColorGrads的作用是通過StartColor和EndColor生成顏色梯度集合。
顏色都可以用紅(r)、綠(g)、藍(b)三個顏色來表示。
程序中先通過GetColor把一般的顏色表示形式轉(zhuǎn)化成一個用紅(r)、綠(g)、藍(b)三個顏色值作元素的集合。
那就首先要知道有什么顏色表示形式,從w3c的Colors部分可以知道有以下形式:
關鍵詞模式:
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則按照設置時的形式返回。
先說說RGB顏色模式,前兩種比較常用應該都明白他們的區(qū)別吧,它用的是16進制表示形式,而我們想要10進制的。
把一個16進制表示的字符轉(zhuǎn)成10進制數(shù)字,一般用parseInt,在substr截取字符之后就可以用parseInt轉(zhuǎn)換。
對于#ff0000這個形式可以這樣轉(zhuǎn)換:
復制代碼 代碼如下:
return Map([color.substr(1, 2), color.substr(3, 2), color.substr(5, 2)],
function(x){ return parseInt(x, 16); }
)

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

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

而關鍵詞大家都很熟悉,要轉(zhuǎn)化卻很麻煩,因為沒有一定規(guī)律只能一個一個對應:
復制代碼 代碼如下:
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)建顏色集合程序中獲得開始顏色和結束顏色的數(shù)據(jù)后,再根據(jù)Step(多少步)就可以獲得步長了:
復制代碼 代碼如下:
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ù)步長生成集合:
復制代碼 代碼如下:
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ù)的,所以最好修正一下:
復制代碼 代碼如下:
return Map(colors, function(x){ return Map(x, function(x){
return Math.min(Math.max(0, Math.floor(x)), 255);
});});

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

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

主站蜘蛛池模板: 中俄两军在日本海等上空战略巡航 | 手机毛片免费看 | 麒麟色欧美影院在线播放 | 日本 一二三 不卡 免费 | BL低喘贯穿顶弄老师H | 国产三级级在线电影 | 国产在线精品国自产拍影院午夜 | 国产一区二区波多野结衣 | 999久久精品国产 | 无限资源好看片2019免费观看 | 色欲AV亚洲情无码AV蜜桃 | 无码专区无码专区视频网网址 | 欧洲内射VIDEOXXX3D | 偷窥wc美女毛茸茸视频 | 国产三级影院 | 国产精品无码亚洲区艳妇 | 成人在免费观看视频国产 | 乌克兰xxxxx| 2019一級特黃色毛片免費看 | 飘雪在线观看免费完整版 | 美女禁处受辱漫画 | 国产精品久久久久久久久爆乳 | brazzers情欲狂欢 | 三级貂蝉艳史 在线观看 | 久草热8精品视频在线观看 久草青青在线 | 一边亲着一面膜下奶韩剧免费 | 日本动漫henta videos | 啪啪激情婷婷久久婷婷色五月 | 果冻传媒在线观看高清完整免费 | 99视频偷窥在线精品国自产拍 | 女人麻豆国产香蕉久久精品 | 伊人久久综在合线影院 | 女人爽到高潮嗷嗷叫视频 | 全是肉的高h短篇列车 | 日本艳妓BBW高潮一19 | 国产午夜精品理论片在线 | 黄页网站免费视频大全9 | 免费在线视频一区 | 国产成人精品免费视频软件 | 老板吻我下身好爽到高潮 | 在线视频 中文字幕 |