先说一哈,下边讨论的这些方式可以在同一个样式表中混合使用。
1. 颜色名(如 red)
方术语就是颜色关键字。
W3C定义了16个颜色关键字:aqua(浅绿色)、black(黑色)、blue(蓝色)、 fuchsia(紫红色)、gray(灰色)、green(绿色)、lime(黄绿色)、 maroon(褐红色)、navy(深蓝色)、olive(茶青色 )、purple(紫色)、red(红色)、silver(银色)、teal(青色)、white(白色)和 yellow(黄色)。要了解这些颜色名及其对应的 RGB 颜色值,请参考:http://www.w3.org/TR/css3-color/#html4。
大多数现代浏览器支持更多种颜色名(即 140 X11 颜色名),但如果真要使用颜色名,
最好只使用前面那 16 种。要了解这 114 咱颜色名及其对应的 RGB 颜色值,
请参考:http://en.wikipedia.org/wiki/X11_color_names。
一般来说,颜色关键字最常用于指定白色和黑色。对于其他颜色真的很较真儿的场
合,还得使用以下几种格式的颜色值。
十六进制颜色(#RRGGBB 或#RGB)
如果你了解 C++、PHP 或 JavaScript,那么对用十六进制值表示颜色应该会比较熟。
十六进制颜色的值的格式如下:#rrggbb - - - 例如橙色是:#ff8800
千万别忘了值开头的#(井号)!
这个 6 位数的前两位定义红色,中间两位定义绿色,后两位定义蓝色。计算机使用
二进制计数,而不是我们常用的十进制,因此才有了十六进制(16 是 2 的 4 次幂)。
十六进制以 16 为基数,使用数字 0-9 和字母 a-f,共 16 个值。其中,a-f 代表 10 到
15。由于每种颜色用两位十六进制值表示,因此该颜色就有 256(16×16)种可能的
值,结果就是 16 777 216(256×256×256)种组合,也就是可以表示那么多种颜色。
纯红色是#ff0000,纯绿色是#00ff00,而纯蓝色是#0000ff。
大多数十六进制颜色值不仔细分析可不容易猜,比如#7ca9be 是深蓝绿色,我怎么知
道的? 首先我们来看每一对 rgb 值中的第一个值,也就是 7、a、b。蓝色和绿色值相
差无几,而红色值也没有那么深。有了这些信息,就可以大致猜出这个颜色了,对,
是蓝绿色。
另外,如果三对值中的每一对是两个相同的数字,也可以使用简写形式:#rgb
如今已经废弃的 216 种 Web 安全色,完全是由这种两两相同的颜色值构成的。
对于上面的例子来说,可以分别将它们写成#f00、#0f0 和#00f。再比如,#ff3322(深
红色)可以简写成#f32。在设定阴影的时候,这种简写方式可以省不少劲儿。
比如,#000 是纯黑,#444 是 75%灰色,#888 是 50%灰色,#bbb 是 25%灰色,而#fff 则是纯白色。RGB 颜色值(R, G , B)
每种颜色都可以用一个 0 到 255(包含)之间的值指定。格式如下:
rgb(r, g, b)
比如,rgb(0,255,0)表示纯绿色。
没错,与十六进制 RGB 值一样,只不过使用的是十进制的数值。因为每种颜色都有
256 种可能,所以它能表示的颜色数量与十六进制格式的一样。不同的是,我们对十
进制数更熟悉,毕竟是童子功嘛。而十六进制是计算机课上才学的(你在学校里学
过计算机,对吧?)。RGB 百分比值(R%, G%, B%)
这是用百分比来表示每种颜色值的一种方法,格式如下:r%, g%, b%
可以接受的值是 0%到 100%。虽然以这种方法只能表示区区一百万(100 × 100 ×
100)种颜色,但对我们绝大数人来说,也已经足够了。同样,使用百分比表示的颜
色值,比使用十六进制更容易猜到你想要的颜色。
举个例子,100%, 0%, 0%是纯红色,0%, 100%, 0%是纯绿色,而 46%, 76%, 80%接近前面用十六进制值作例子分析的深蓝绿色。HSL (色相, 饱和度%, 亮度%)
HSL 格式如下:
HSL(0,0%,0%)
HSL 比我们见过的各种 RGB 方式更直观,因为使用它更容易写出和看懂颜色。
HSL 颜色中的第一个值表示色相,也就是一个实际的颜色,比如红色和绿色。所有
颜色围绕色相环(也叫色轮)一周,而色相值以圆周上的度数表示。
红色是 0 或 360,青色是与之相对的 180。以下是彩虹七色在色轮中大致的色相值。
红:0
橙:35
黄:60
绿:125
蓝:230
靛:280
紫:305
至于饱和度和亮度,相对就容易理解多了。饱和度设定有多少颜色,灰色的饱和度
低,而强烈的色彩饱和度高。亮度设定颜色的明暗,0%就是黑色,100%就是白色,
而中间的值是实际能看到的色相。
如果把上面七彩虹的色相值都记住,或者就放在手边,那么你会发现想写出什么颜
色都不在话下。RGB 和十六进制颜色值,都要求你事先在大脑里先混合颜色,而 HSL
则只有一个表示颜色的值。从把饱和度和亮度都设定为 50%,就可以轻松调制出你
想要的任何颜色来。Alpha 通道
请注意,RGB 和 HSL 都支持 Alpha 通道,用于设置颜色的不透明度(换句话说,就
是能够透过多少背景)。相应的格式分别叫 RGBA 和 HSLA。其中,两种格式中的 A
(alpha)值可以是 1(完全不透明)也可以是 0(完全透明),或者介于 1 和 0 之间的
小数值。