W3C 的 CSS 工作组发布 CSS 颜色模块(CSS Color Module Level 4)首份公开标准工作草案已经有一年之久了,你可能无法想象 CSS 中这一个
color
或background-color
等属性包含了色彩学多少基本知识。色彩学广泛运用于美术、计算机图形学、机器学习、心理学等学科中,这次我们就来假借 CSS 颜色模块来窥见其一斑。(因本人水平有限,如有描述不当的地方,希望大家指出)
已命名颜色(Named Colors)
字如其名,就是有公认名字的颜色。具体颜色名称引用请见 W3C 网站:
https://www.w3.org/TR/SVG/types.html#ColorKeywords
/* CSS 引用已命名颜色时不可以使用引号 */
.font-aqua {
color: aqua;
}
灰度(gray)
从最暗黑色到最亮的白色的灰度,中间根据采样的级数可能分为 8 bits、16 bits 等。(注意灰度图像与黑白图像的区别)
网页设计时可能可以加上透明度参数。
.font-gray-1 {
color: gray(50%);
}
三原色光 模式(RGB)
又称 RGB颜色模型 或 红绿蓝颜色模型,是一种加色模型,将红(Red)、绿(Green)、蓝(Blue)三原色的色光以不同的比例相加,以产生多种多样的色光。(且三原色的红绿蓝不可能用其他单色光合成)

- 亮度和明度
- 亮度 Lightness,指颜色从全黑到全白 。(50% 为原来的颜色,100% 为白色)

- 明度 Brightness(或 Value),指颜色从全黑到颜色能维持最大饱和度的亮度。(100% 为原来的颜色)

与 RGB 模型的笛卡尔直角坐标系不同,HSV(色相,饱和度,色调)在概念上可以被认为是颜色的倒圆锥体(黑点在下顶点,白色在上底面圆心),HSL 在概念上表示了一个双圆锥体和圆球体(白色在上顶点,黑色在下顶点,最大横切面的圆心是半程灰色)。


/* HSL */
.font-aqua {
color: hsl(180, 100%, 50%);
}
/* HSLA */
.font-aqua {
color: hsl(180, 100%, 50%, 100%);
}
/* HSV */
.font-aqua {
hsv(180, 100%, 100%);
}
- 与 RGB 间的转换关系
/* HSL 转 RGB */
function hslToRgb(hue, sat, light) {
if( light <= 0.5 ) {
var t2 = light * (sat + 1);
} else {
var t2 = light + sat - (light * sat);
}
var t1 = light * 2 - t2;
var r = hueToRgb(t1, t2, hue + 2);
var g = hueToRgb(t1, t2, hue);
var b = hueToRgb(t1, t2, hue - 2);
return [r,g,b];
}
HWB
HWB 是另一种以色相(Hue)为基础的色彩模型,加上白色(White)的的程度,黑色(Black)的程度这两个参数,可以使其比饱和度和亮度更容易让人理解。

/* HWB,可能有第四位表示透明度 */
.font-aqua {
color: (180, 0%, 0%);
}
- 与 RGB 之间的转换关系
function hwbToRgb(hue, white, black) {
var rgb = hslToRgb(hue, 1, .5);
for(var i = 0; i < 3; i++) {
rgb[i] *= (1 - white - black);
rgb[i] += white;
}
return rgb;
}
YUV
YUV 是一种颜色编码方法,由辉度(Luma),色度(或浓度,Chroma)来表示,其种类较繁,且草 CSS 颜色模块草案中并为提及,故不再占用篇幅了。
- YUV 转 RGB
还有
此外还有 LAB、LCH、YIQ、CIE 等色彩模型,因为CSS 颜色模块中并为提及,就不在此处赘述,感兴趣的可以自行查阅其他资料。
参考
-
三原色光模式 . wikipedia.org:https://zh.wikipedia.org/wiki/三原色光模式
-
印刷四分色模式 . wikipedia.org:https://zh.wikipedia.org/wiki/印刷四分色模式
-
不可不知的色彩学 . tec.ntu.edu.tw:http://tec.ntu.edu.tw/columns/58023fa39508fb2a459cfff2
-
色彩 · 理论 . styletin.com:http://styletin.com/archives/535
-
明度、亮度、辉度的比较 . styletin.com:http://styletin.com/archives/583#i-4
网友评论