近来看了Dean的“Convert any colour value to hex in MSIE”,终于解决了根据关键字获取颜色rgb值的问题。
顺便把程序也重新整理一番,并使用了最近整理的工具库。
效果预览到这里
下载完整实例
程序说明
【ColorGrads颜色梯度】
程序ColorGrads的作用是根据颜色集合和渐变级数生成颜色梯度集合。
渐变级数的意思是分多少步完成渐变。
网页设计中的颜色是用RGB色彩模式呈现的。
在这个模式中每种颜色可以用三个代表红(r)、绿(g)、蓝(b)的颜色值(0到255)来表示。
从w3c的Colors部分看到标准中颜色的表示形式包括:
关键字形式:
em { color: red }
RGB形式:
em { color: #f00 }
em { color: #ff0000 }
em { color: rgb(255, 0, 0) }
em { color: rgb(100%, 0%, 0%) }
以上都是表示同一种颜色(红色)。
关键字形式就是用关键字代表颜色值。
而RGB形式,前两种用的比较多,都是一个"#"后面带16进制表示的颜色值,第三种是用十进制的颜色值,第四种是实际值跟255的百分比形式。
各个浏览器对各种颜色表示形式的获取并不相同:
"color: red"形式:
ie
opera
ff
chrome/safari
style
red
red
#ff0000
red
currentStyle
red
"red"
getComputedStyle
#ff0000
rgb(255, 0, 0)
rgb(255, 0, 0)
"color: #ff0000"/"color: #f00"形式:
ie
opera
ff
chrome/safari
style
#ff0000/#f00
#ff0000
rgb(255, 0, 0)
rgb(255, 0, 0)
currentStyle
#ff0000/#f00
#ff0000
getComputedStyle
#ff0000
rgb(255, 0, 0)
rgb(255, 0, 0)
"color: rgb(255, 0, 0)"/"color: rgb(100%, 0%, 0%)"形式:
ie
opera
ff
chrome/safari
style
rgb(255,0,0)
#ff0000
rgb(255, 0, 0)
rgb(255, 0, 0)
currentStyle
rgb(255,0,0)
#ff0000
getComputedStyle
#ff0000
rgb(255, 0, 0)
rgb(255, 0, 0)
基本上得到的值还是按标准的形式显示的,只是有些会自动转换形式。
不过ie的rgb形式跟ff/chrome/safari的不同,数值之间并没有空格。
要特别注意的是opera用currentStyle获取关键字形式得到的颜色值是带双引号的,十分奇怪,要尽量避免使用。
要获取两种颜色的渐变梯度,先要把颜色转化成能用来计算的数值。
GetColor和GetData程序就是用来把符合w3c标准表示的颜色值转化成组合该颜色的红(r)、绿
一般而言,如果脚本很长,我们把它们放到一个JS文件中,然后生成一个script元素并把它加入DOM树,把src设置为JS文件的地址即可。但对于很自短的脚本,如果我们又不想用new Function与eval呢?这里还有一办法,利用script元素的一个少为人知的属性text,非标准属性,但所有主流浏览器都支持。有点像innerHTML,但innerHTML只 ......
今天在调试JavaScript程序,突然发现忘了单引号和双引号的区别是什么了,于是乎上网搜索之,加上自己的调试,最终发现原来是书上写的出错了。NND个熊,让我对这书失望极了。废话不说,直奔主题。
JavaScript不区分单个字符和字符串,任何字符或字符串可以用双引号或单引号引起来。如果字符串本身含有双 ......