先来玩个游戏,思考一个问题,让你回答5个绿色的东西,你能最先想到的是什么?随处可见的绿色植物,比如我桌子上的绿萝,绿油油的。绿色的水杯、绿色的白板磁钉、绿色的垃圾回收箱、绿色的削皮刀、荧光笔帽、安全出口提示灯,还有交通信号灯🚥、绿色肥肥的鹦鹉、乔治的恐龙、迷彩服、美元、国旗、台球桌、放眼望去看不到边的青青草原,其中有一群养居住在羊村,灰太狼一家???🐸🐢🍏🥝绿色出行,低碳环保。留言告诉我你的答案。
(上图来自网络)乌克兰 Klevan 火车隧道
Green
我们今天要说的,是 RGB 颜色模型中的绿色。
CSS Level 1 定义的16种颜色名称和十六进制对应关系
最近在研究 RGB 的颜色模型,发现一件非常有意思的事。在 CSS 的颜色关键字(Color Keywords)中,红色 red的 RGB 值为#FF0000
,蓝色 blue 的为#0000FF
,而绿色 green 为#008000
???不应该是#00FF00
嘛?竟然叫lime
,还绿黄,黄色在哪里,我瞎了么?
不透明度\颜色 | 红色 | 绿色 | 蓝色 |
---|---|---|---|
100% | |||
50% |
CSS Level 1 只接受 16 个基本颜色,称为VGA颜色,因为它们来源于 VGA 显卡所显示的颜色集合而被称为 VGA colors (视频图形阵列色彩)。最初,浏览器接受其它的颜色,由于一些早期浏览器是 X11 应用程序,这些颜色大多数是 X11 命名的颜色列表,虽然有一点不同。SVG 1.0 是首个正式定义这些关键字的标准;CSS 色彩标准 3 也正式定义了这些关键字。它们经常被称作扩张的颜色关键字, X11 颜色或 SVG 颜色 。
规范中指出,最早的命名来源于Windows 的 VGA 调色板,但是为什么要这么做?鬼才逻辑?当时并没有考虑未来的发展?
神秘邮件
找到一个关于这个问题的邮件,大致内容是这样说的。
有个叫Chris的问了个问题:为什么SVG 1.0中的颜色命名与X11中的不一样,到底哪个才是正确的?其中冲突最大的是 green 的命名,因为它是 RGB 模型中的原色。
正在看新闻联播的 John 看到了邮件,立刻拿出吃饭的家伙,回复:
Green 的命名由来已久,早些见于 HTML3.2,然后是 HTML4、CSS1、CSS2,最终是在 XSL、SVG 中。
green 被定义为半强度的绿原色,是完全不透明绿色`lime`的一半强度,就像是 maroon 和 red 的关系
一样,这个标准呢,已经存在很多年,你可以去 Netscape 1、 MSIE 2 和 Opera 1 发现它。最早可追
溯1931年国际颜色标准进行的客观测量。
然后说最好能够建立标准,相信 W3C,巴拉巴拉,并提到不认为有实际冲突,只是一套颜色的命名规则。
的颜色国际标准:CIE 1931 色彩空间
使用标准的波长获取三原色,700 nm (red), 546.1 nm (green) and 435.8 nm (blue).
the human eye can actually see light with wavelengths up to about 810 nm, but with a sensitivity that is many thousand times lower than for green light. These color matching functions define what is known as the "1931 CIE standard observer".
看了下测量过程,没太看明白,也没找到具体为什么要这么叫的原因,只知道科学实验表明,人眼感受到的绿光要比红光和蓝光要强烈。
总结
在 Web 开发中,green
指的是#008000
,不是#00FF00
,后者叫做lime
。这种叫法来源于早期的 HTML 和 CSS 规范中定义的。HTML 和 CSS 中可以使用 green 英文名字代替十六进制的值,在 早期的 X11 颜色规范中,green/lime
有同样的十六进制值,都是#00FF00
。
在最后
扯了这么多,也不知道说没说明白,还有刚开始说绿帽子的那位同学,放学别走。另外喜洋洋到底是什么羊?青青草原为什么叫青青草原?