W3C

CSS 颜色模块 3 级

W3C 推荐标准

关于本文档的更多详情
此版本:
https://www.w3.org/TR/2022/REC-css-color-3-20220118/
最新版本:
https://www.w3.org/TR/css-color-3/
上一版本:
历史
https://www.w3.org/standards/history/css-color-3
编辑草案:
https://drafts.csswg.org/css-color-3/
实现报告:
https://test.csswg.org/harness/results/css-color-3_dev/grouped/
反馈:
GitHub Issues 是讨论此规范的首选方式。提交问题时,请在标题中加入“css-color-3”文字,最好像这样:“[css-color-3] …评论概要…”。所有问题和评论都会被 归档,并且还有 历史归档
编辑:
Tantek Çelik (Mozilla Corporation, 之前在 Microsoft Corporation 任职) <>
Chris Lilley (W3C) <https://svgees.us/>
L. David Baron (W3C 特邀专家) <>
其他作者:
Steven Pemberton (CWI) <>
Brad Pettit (Microsoft Corporation) <>
测试套件:
http://test.csswg.org/suites/css3-color/nightly-unstable/
勘误表:
https://www.w3.org/Style/2022/REC-css-color-3-20220118-errata.html

摘要

CSS(层叠样式表)是一种用于描述HTML和XML文档在屏幕、纸张、语音等上的呈现的语言。它使用与颜色相关的属性和值为文档中的文本、背景、边框及元素的其他部分着色。本规范描述了前景色和群组不透明度的颜色值和属性。这些包括来自CSS第2级的属性和值以及新的值。

本文档状态

本节描述了本文档在发布时的状态。当前W3C出版物列表及本技术报告的最新修订版可在W3C技术报告索引(https://www.w3.org/TR/)中找到。

本文件由CSS工作组推荐标准形式发布,使用推荐标准轨道。

W3C推荐标准是一种规范,在广泛的共识构建之后,得到W3C及其成员的认可,并且工作组成员承诺为实现免费许可

W3C推荐将此规范广泛部署为Web的标准。

本文件由在W3C专利政策下运作的小组制作。W3C维护了任何专利披露的公开列表,该页面还包括专利披露的指示。了解专利内容的个人如果认为专利中包含基本声明,必须根据W3C专利政策第6节披露信息。

本文件受2021年11月2日W3C流程文档管理。

单独的 实现报告显示了测试套件中的每个测试都通过了至少两个独立实现。 然而,大多数测试现已为CSS Color 4进行了更新(见实现报告)。

本文档的完整变更列表可用。


1. 介绍

本节为非规范性内容。

超越第2级的CSS是一组模块,分割开来允许规范与其实现一同逐步发展。本规范是这些模块之一。

本模块描述了允许作者指定元素前景色和不透明度的CSS属性。该模块还详细描述了CSS <color> 值类型。

它不仅定义了已经存在于CSS1CSS2中的与颜色相关的属性和值,还定义了新的属性和值。

该规范是以下推荐标准和工作草案相关部分合并的结果,并新增了一些新功能。

2. 依赖关系

其他术语定义在定义部分[CSS21]中。文档源代码和片段的示例以XML [XML10]或HTML [HTML401]语法给出。

3. 颜色属性

3.1. 前景色:‘color’ 属性

名称: color
值: <color> | inherit
初始值: 取决于用户代理
适用于: 所有元素
继承:
百分比: N/A
计算值:
  • 基本颜色关键字、RGB十六进制值和扩展颜色关键字的计算值为相应的数值RGB三元组,例如六位十六进制值或rgb(...)函数值,alpha值为1。
  • 关键字‘transparent’的计算值为全零的数值RGBA四元组,例如rgba(0,0,0,0)
  • 对于所有其他值,计算值为指定值。

该属性描述了元素文本内容的前景色。此外,它还用于为任何其他接受颜色值的属性提供一个潜在的间接值(currentColor)。如果在‘currentColor’关键字本身设置在‘color’属性上,则它被视为‘color: inherit’。

有多种方法可以指定酸橙绿:

示例:

em { color: lime }               /* 颜色关键字 */
em { color: rgb(0,255,0) }       /* RGB 范围 0-255   */
<color>
颜色单位在后续部分定义。

3.2. 透明度:‘opacity’ 属性

不透明度可以被视为一种后处理操作。从概念上讲,在元素(包括其后代)被渲染到一个RGBA离屏图像后,不透明度设置指定了如何将离屏渲染混合到当前的合成渲染中。详情请参见简单Alpha合成

名称: opacity
值: <alphavalue> | inherit
初始值: 1
适用于: 所有元素
继承:
百分比: N/A
计算值: 与指定值相同,在将<alphavalue>裁剪到[0.0,1.0]范围后。
<alphavalue>
在语法上为<number>。均匀的不透明度设置,适用于整个对象。任何超出0.0(完全透明)到1.0(完全不透明)范围的值将被限制在此范围内。如果对象有子元素,则效果如同子元素通过一个蒙版与当前背景混合,该蒙版的每个像素值为<alphavalue>。对于SVG,“有子元素”相当于作为一个容器元素[SVG11]

由于不透明度小于1的元素是从单个离屏图像合成的,因此其外部的内容无法在z轴顺序中夹在其内部内容的各部分之间。出于同样的原因,实现必须为不透明度小于1的任何元素创建一个新的堆叠上下文。如果不透明度小于1的元素没有定位,那么它将与定位元素(堆叠级别为0)一起绘制在其父级堆叠上下文的同一层上。如果不透明度小于1的元素是定位的,那么‘z-index’属性如[CSS21]中所述适用,除非使用的值为‘auto’,则该元素的行为完全如同它是‘0’。有关堆叠上下文的更多信息,请参见第9.9节附录E。这些规则不适用于SVG元素,因为SVG有自己的渲染模型[SVG11],第3章)。

4. 颜色单位

<color>可以是一个关键字或数值规格。

4.1. 基本颜色关键字

基本颜色关键字的列表包括:aqua、black、blue、fuchsia、gray、green、lime、maroon、navy、olive、purple、red、silver、teal、white 和 yellow。这些颜色名称是ASCII大小写不敏感的。

颜色名称和sRGB
名称 数值 颜色名称 十六进制 RGB 十进制
black #000000 0,0,0
silver #C0C0C0 192,192,192
gray #808080 128,128,128
white #FFFFFF 255,255,255
maroon #800000 128,0,0
red #FF0000 255,0,0
purple #800080 128,0,128
fuchsia #FF00FF 255,0,255
green #008000 0,128,0
lime #00FF00 0,255,0
olive #808000 128,128,0
yellow #FFFF00 255,255,0
navy #000080 0,0,128
blue #0000FF 0,0,255
teal #008080 0,128,128
aqua #00FFFF 0,255,255

示例:

body {color: black; background: white }
h1 { color: maroon }
h2 { color: olive }

4.2. 数值颜色值

4.2.1. RGB颜色值

RGB颜色模型用于数值颜色规格。这些示例都指定了相同的颜色:

示例:

em { color: #f00 }              /* #rgb */
em { color: #ff0000 }           /* #rrggbb */
em { color: rgb(255,0,0) }
em { color: rgb(100%, 0%, 0%) }

以十六进制表示的RGB值的格式是‘#’后紧跟三个或六个十六进制字符。三位数的RGB表示法(#rgb)通过复制数字转换为六位数形式(#rrggbb),而不是通过添加零。例如,#fb0扩展为#ffbb00。这确保了白色(#ffffff)可以用短格式(#fff)指定,并消除了对显示器颜色深度的任何依赖。

功能表示法中的RGB值格式是‘rgb(’后跟三个数值的逗号分隔列表(可以是三个整数值或三个百分比值),然后是‘)’。整数值255对应100%,并且在十六进制表示法中对应F或FF:rgb(255,255,255) = rgb(100%,100%,100%) = #FFF。数值周围允许有空白字符。

所有RGB颜色都在sRGB颜色空间中指定(参见[SRGB])。用户代理在表示这些颜色的保真度上可能有所不同,但使用sRGB提供了一个明确且客观可测量的颜色定义,可以与国际标准相关联(参见[COLORIMETRY])。

当已知色域时,设备色域之外的值应被剪切或映射到色域内:必须更改红、绿和蓝值,以使其在设备支持的范围内。用户代理可以执行更高质量的颜色从一个色域到另一个色域的映射。本规范未定义精确的剪切行为。对于典型的CRT显示器,其设备色域与sRGB相同,以下四条规则是等效的:

示例:

em { color: rgb(255,0,0) }       /* 整数范围 0 - 255 */
em { color: rgb(300,0,0) }       /* 被剪切为 rgb(255,0,0) */
em { color: rgb(255,-10,0) }     /* 被剪切为 rgb(255,0,0) */
em { color: rgb(110%, 0%, 0%) }  /* 被剪切为 rgb(100%,0%,0%) */

其他设备(如打印机)的色域与sRGB不同;某些在0..255 sRGB范围之外的颜色将可表示(在设备色域内),而某些在0..255 sRGB范围内的颜色将超出设备色域,因此将被映射。

4.2.2. RGBA颜色值

在本规范中,RGB颜色模型扩展为包含“alpha”以允许指定颜色的不透明度。详情请参见简单Alpha合成。这些示例都指定了相同的颜色:

示例:

em { color: rgb(255,0,0) }      /* 整数范围 0 - 255 */
em { color: rgba(255,0,0,1)     /* 相同的颜色,带有显式不透明度 1 */
em { color: rgb(100%,0%,0%) }   /* 浮点数范围 0.0% - 100.0% */
em { color: rgba(100%,0%,0%,1) } /* 相同的颜色,带有显式不透明度 1 */

与RGB值不同,RGBA值没有十六进制表示法。

功能表示法中的RGBA值格式是‘rgba(’后跟三个数值的逗号分隔列表(可以是三个整数值或三个百分比值),然后是<alphavalue>,再然后是‘)’。整数值255对应100%,rgba(255,255,255,0.8) = rgba(100%,100%,100%,0.8)。数值周围允许有空白字符。

实现必须根据由这些组件组成的RGB颜色值的规则,将RGBA颜色值的红色、绿色和蓝色分量裁剪到设备色域内。

这些示例指定了使用rgba()表示法可以实现的效果:

示例:

p { color: rgba(0,0,255,0.5) }        /* 半透明纯蓝色 */
p { color: rgba(100%, 50%, 0%, 0.1) } /* 非常透明的纯橙色 */

注意。 如果用户代理不支持RGBA值,它们应根据CSS前向兼容性解析规则([CSS21],第4章)被视为无法识别的值。RGBA值不能被简单地视为忽略了不透明度的RGB值。

4.2.3. transparent’ 颜色关键字

CSS1 引入了用于 background-color 属性的‘transparent’值。CSS2 允许 border-color 属性也接受‘transparent’值。开放电子书(tm)出版结构 1.0.1 [OEB101] 扩展了‘color’属性,以接受‘transparent’关键字。CSS3 扩展了颜色值,以包括‘transparent’关键字,以允许其在所有接受 <color> 值的属性中使用。这简化了 CSS3 中这些属性的定义。

transparent
完全透明。这个关键字可以被视为透明黑色的简写,即 rgba(0,0,0,0),这是它的计算值。

4.2.4. HSL颜色值

CSS3 增加了数值表示的色相-饱和度-亮度(HSL)颜色,作为数值RGB颜色的补充。已经观察到RGB颜色有以下局限性:

还有其他几种颜色方案可能。HSL的一些优点是它对亮度和暗度是对称的(例如HSV就不是这样),并且将HSL转换为RGB非常简单。

HSL颜色编码为三元组(色相、饱和度、亮度)。色相表示为颜色圆的角度(即以圆形表示的彩虹)。这个角度通常以度为单位,因此在CSS中单位是隐含的;在语法上,只给出一个<number>。按定义,红色=0=360,其他颜色分布在圆周上,因此绿色=120,蓝色=240,等等。作为角度,它隐含地循环,即-120=240和480=120。实现可以通过计算(((x mod 360) + 360) mod 360)将这样的角度x规范化为[0,360)范围(即零度(含)到360度(不含))。饱和度和亮度表示为百分比。100%表示全饱和度,0%表示灰度。0%亮度是黑色,100%亮度是白色,50%亮度是“正常”的亮度。

例如:

示例:

* { color: hsl(0, 100%, 50%) }   /* 红色 */
* { color: hsl(120, 100%, 50%) } /* 酸橙色 */
* { color: hsl(120, 100%, 25%) } /* 深绿色 */
* { color: hsl(120, 100%, 75%) } /* 浅绿色 */
* { color: hsl(120, 75%, 75%) }  /* 粉绿色,等等 */

HSL相比RGB的优势在于它更加直观:你可以猜测你想要的颜色,然后进行微调。创建匹配的颜色组也更容易(通过保持色相相同并改变亮度/暗度和饱和度)。

如果饱和度小于0%,实现必须将其裁剪为0%。如果结果超出设备色域,实施必须将其裁剪到设备色域。此裁剪应在可能的情况下保持色相,但除此之外未定义。(换句话说,裁剪与在应用将HSL转换为RGB的算法之后应用RGB颜色裁剪规则不同。)

将HSL颜色转换为sRGB在数学上是直接的。以下是转换算法在JavaScript中的示例实现。它返回一个由三个数字组成的数组,表示颜色的红色、绿色和蓝色通道,归一化为[0,1]范围。

function hslToRgb (hue, sat, light) {
  hue = hue % 360;

  if (hue < 0) {
      hue += 360;
  }

  sat /= 100;
  light /= 100;

  function f(n) {
      let k = (n + hue/30) % 12;
      let a = sat * Math.min(light, 1 - light);
      return light - a * Math.max(-1, Math.min(k - 3, 9 - k, 1));
  }

  return [f(0), f(8), f(4)];
}
4.2.4.1. HSL 示例

下表中的每个表格代表一种色相。从色彩圆中选择了十二种间隔均匀的颜色(即30°间隔):红色、黄色、绿色、青色、蓝色、洋红色,以及所有中间色(最后一种颜色是洋红色和红色之间的颜色)。

在每个表格中,X轴代表饱和度,Y轴代表亮度。

0° 红色
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
30° 红-黄(=橙色)
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
60° 黄色
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
90° 黄-绿色
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
120° 绿色
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
150° 绿-青色
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
180° 青色
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
210° 青-蓝色
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
240° 蓝色
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
270° 蓝-洋红色
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
300° 洋红色
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
330° 洋红-红色
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%

4.2.5. HSLA颜色值

正如‘rgb()’功能表示法有‘rgba()’的alpha对应项,‘hsl()’功能表示法也有‘hsla()’的alpha对应项。详情请参见简单Alpha合成。这些示例指定了相同的颜色:

示例:

em { color: hsl(120, 100%, 50%) }     /* 绿色 */
em { color: hsla(120, 100%, 50%, 1) } /* 相同的颜色,带有显式不透明度1 */

HSLA颜色值在功能表示法中的格式为‘hsla(’后跟色相(以度为单位)、饱和度和亮度(以百分比表示),以及<alphavalue>,再然后是‘)’。数值周围允许有空白字符。

实现必须根据由这些组件组成的HSL颜色值的规则,将HSLA颜色值的色相、饱和度和亮度分量裁剪到设备色域内。

这些示例指定了使用hsla()表示法可以实现的效果:

示例:

p { color: hsla(240, 100%, 50%, 0.5) } /* 半透明纯蓝色 */
p { color: hsla(30, 100%, 50%, 0.1) }  /* 非常透明的纯橙色 */

4.3. 扩展颜色关键字

下表提供了流行浏览器支持的X11颜色列表,[X11COLORS]并增加了来自SVG 1.0的灰色/灰色变体。最终的列表与SVG 1.0 颜色关键字名称完全相同。本规范扩展了它们在SVG之外的定义。左侧的两个颜色样本展示了以两种方式设置表格单元格的背景颜色:第一列使用命名的颜色值,第二列使用相应的数值颜色值。

命名 数值 颜色名称 十六进制 rgb 十进制
aliceblue #f0f8ff 240,248,255
antiquewhite #faebd7 250,235,215
aqua #00ffff 0,255,255
aquamarine #7fffd4 127,255,212
azure #f0ffff 240,255,255
beige #f5f5dc 245,245,220
bisque #ffe4c4 255,228,196
black #000000 0,0,0
blanchedalmond #ffebcd 255,235,205
blue #0000ff 0,0,255
blueviolet #8a2be2 138,43,226
brown #a52a2a 165,42,42
burlywood #deb887 222,184,135
cadetblue #5f9ea0 95,158,160
chartreuse #7fff00 127,255,0
chocolate #d2691e 210,105,30
coral #ff7f50 255,127,80
cornflowerblue #6495ed 100,149,237
cornsilk #fff8dc 255,248,220
crimson #dc143c 220,20,60
cyan #00ffff 0,255,255
darkblue #00008b 0,0,139
darkcyan #008b8b 0,139,139
darkgoldenrod #b8860b 184,134,11
darkgray #a9a9a9 169,169,169
darkgreen #006400 0,100,0
darkgrey #a9a9a9 169,169,169
darkkhaki #bdb76b 189,183,107
darkmagenta #8b008b 139,0,139
darkolivegreen #556b2f 85,107,47
darkorange #ff8c00 255,140,0
darkorchid #9932cc 153,50,204
darkred #8b0000 139,0,0
darksalmon #e9967a 233,150,122
darkseagreen #8fbc8f 143,188,143
darkslateblue #483d8b 72,61,139
darkslategray #2f4f4f 47,79,79
darkslategrey #2f4f4f 47,79,79
darkturquoise #00ced1 0,206,209
darkviolet #9400d3 148,0,211
deeppink #ff1493 255,20,147
deepskyblue #00bfff 0,191,255
dimgray #696969 105,105,105
dimgrey #696969 105,105,105
dodgerblue #1e90ff 30,144,255
firebrick #b22222 178,34,34
floralwhite #fffaf0 255,250,240
forestgreen #228b22 34,139,34
fuchsia #ff00ff 255,0,255
gainsboro #dcdcdc 220,220,220
ghostwhite #f8f8ff 248,248,255
gold #ffd700 255,215,0
goldenrod #daa520 218,165,32
gray #808080 128,128,128
green #008000 0,128,0
greenyellow #adff2f 173,255,47
grey #808080 128,128,128
honeydew #f0fff0 240,255,240
hotpink #ff69b4 255,105,180
indianred #cd5c5c 205,92,92
indigo #4b0082 75,0,130
ivory #fffff0 255,255,240
khaki #f0e68c 240,230,140
lavender #e6e6fa 230,230,250
lavenderblush #fff0f5 255,240,245
lawngreen #7cfc00 124,252,0
lemonchiffon #fffacd 255,250,205
lightblue #add8e6 173,216,230
lightcoral #f08080 240,128,128
lightcyan #e0ffff 224,255,255
lightgoldenrodyellow #fafad2 250,250,210
lightgray #d3d3d3 211,211,211
lightgreen #90ee90 144,238,144
lightgrey #d3d3d3 211,211,211
lightpink #ffb6c1 255,182,193
lightsalmon #ffa07a 255,160,122
lightseagreen #20b2aa 32,178,170
lightskyblue #87cefa 135,206,250
lightslategray #778899 119,136,153
lightslategrey #778899 119,136,153
lightsteelblue #b0c4de 176,196,222
lightyellow #ffffe0 255,255,224
lime #00ff00 0,255,0
limegreen #32cd32 50,205,50
linen #faf0e6 250,240,230
magenta #ff00ff 255,0,255
maroon #800000 128,0,0
mediumaquamarine #66cdaa 102,205,170
mediumblue #0000cd 0,0,205
mediumorchid #ba55d3 186,85,211
mediumpurple #9370db 147,112,219
mediumseagreen #3cb371 60,179,113
mediumslateblue #7b68ee 123,104,238
mediumspringgreen #00fa9a 0,250,154
mediumturquoise #48d1cc 72,209,204
mediumvioletred #c71585 199,21,133
midnightblue #191970 25,25,112
mintcream #f5fffa 245,255,250
mistyrose #ffe4e1 255,228,225
moccasin #ffe4b5 255,228,181
navajowhite #ffdead 255,222,173
navy #000080 0,0,128
oldlace #fdf5e6 253,245,230
olive #808000 128,128,0
olivedrab #6b8e23 107,142,35
orange #ffa500 255,165,0
orangered #ff4500 255,69,0
orchid #da70d6 218,112,214
palegoldenrod #eee8aa 238,232,170
palegreen #98fb98 152,251,152
paleturquoise #afeeee 175,238,238
palevioletred #db7093 219,112,147
papayawhip #ffefd5 255,239,213
peachpuff #ffdab9 255,218,185
peru #cd853f 205,133,63
pink #ffc0cb 255,192,203
plum #dda0dd 221,160,221
powderblue #b0e0e6 176,224,230
purple #800080 128,0,128
red #ff0000 255,0,0
rosybrown #bc8f8f 188,143,143
royalblue #4169e1 65,105,225
saddlebrown #8b4513 139,69,19
salmon #fa8072 250,128,114
sandybrown #f4a460 244,164,96
seagreen #2e8b57 46,139,87
seashell #fff5ee 255,245,238
sienna #a0522d 160,82,45
silver #c0c0c0 192,192,192
skyblue #87ceeb 135,206,235
slateblue #6a5acd 106,90,205
slategray #708090 112,128,144
slategrey #708090 112,128,144
snow #fffafa 255,250,250
springgreen #00ff7f 0,255,127
steelblue #4682b4 70,130,180
tan #d2b48c 210,180,140
teal #008080 0,128,128
thistle #d8bfd8 216,191,216
tomato #ff6347 255,99,71
turquoise #40e0d0 64,224,208
violet #ee82ee 238,130,238
wheat #f5deb3 245,222,179
white #ffffff 255,255,255
whitesmoke #f5f5f5 245,245,245
yellow #ffff00 255,255,0
yellowgreen #9acd32 154,205,50

4.4. currentColor’ 颜色关键字

CSS1和CSS2将‘border-color’属性的初始值定义为color’属性的值,但未定义相应的关键字。SVG认识到了这一遗漏,因此SVG 1.0 为‘fill’、‘stroke’、‘stop-color’、‘flood-color’和‘lighting-color’属性引入了‘currentColor’值。CSS3 扩展了颜色值,包括‘currentColor’关键字,以允许其在所有接受<color>值的属性中使用。这简化了CSS3中这些属性的定义。

currentColor
color’属性的值。‘currentColor’关键字的使用值是‘color’属性的计算值。如果‘currentColor’关键字设置在‘color’属性本身上,则它被视为‘color: inherit’。

4.5. CSS系统颜色

4.5.1. CSS2系统颜色

已废弃。 除了能够为文本、背景等分配颜色关键字值之外,CSS2还允许作者以一种方式指定颜色,使其能够集成到用户的图形环境中。

对于没有相应值的系统,指定的值应映射到最近的系统颜色值或默认颜色。请注意,某些CSS配置文件可能根本不支持系统颜色。

以下列出了颜色相关CSS值的其他值及其一般含义。任何颜色属性都可以采用以下名称之一。虽然这些名称是ASCII大小写不敏感的,但建议使用下文所示的混合大小写,以使名称更易读。

ActiveBorder
活动窗口边框。
ActiveCaption
活动窗口标题。
AppWorkspace
多文档界面的背景色。
Background
桌面背景。
ButtonFace
3D元素的面背景色,这些元素由于周围的边框层显得具有3D效果。
ButtonHighlight
3D元素的光源面边框颜色,这些元素由于周围的边框层显得具有3D效果。
ButtonShadow
3D元素的背光面边框颜色,这些元素由于周围的边框层显得具有3D效果。
ButtonText
按钮上的文本。
CaptionText
标题、大小框和滚动条箭头框中的文本。
GrayText
灰色(禁用)文本。如果当前显示驱动程序不支持纯灰色,则此颜色设置为#000。
Highlight
控件中选择的项目。
HighlightText
控件中选择项目的文本。
InactiveBorder
非活动窗口边框。
InactiveCaption
非活动窗口标题。
InactiveCaptionText
非活动标题中的文本颜色。
InfoBackground
工具提示控件的背景颜色。
InfoText
工具提示控件的文本颜色。
Menu
菜单背景。
MenuText
菜单中的文本。
Scrollbar
滚动条的灰色区域。
ThreeDDarkShadow
3D元素的背光面边框的较暗(通常是外部)颜色,这些元素由于周围的双层边框显得具有3D效果。
ThreeDFace
3D元素的面背景色,这些元素由于周围的双层边框显得具有3D效果。
ThreeDHighlight
3D元素的光源面边框的较亮(通常是外部)颜色,这些元素由于周围的双层边框显得具有3D效果。
ThreeDLightShadow
3D元素的光源面边框的较暗(通常是内部)颜色,这些元素由于周围的双层边框显得具有3D效果。
ThreeDShadow
3D元素的背光面边框的较亮(通常是内部)颜色,这些元素由于周围的双层边框显得具有3D效果。
Window
窗口背景。
WindowFrame
窗口框架。
WindowText
窗口中的文本。

已废弃的示例:

例如,要将段落的前景色和背景色设置为用户窗口的相同前景色和背景色,请编写以下内容:

p { color: WindowText; background-color: Window }

4.6. 使用颜色的注意事项

虽然颜色可以为文档添加大量信息并使其更易于阅读,但在文档中包含颜色时,请考虑W3C的《Web内容可访问性指南》[WCAG20]

5. 简单Alpha合成

在绘制时,实现必须根据《SVG 1.1》14.2节“简单Alpha合成”中的规则处理alpha[SVG11]。(如果该节中提到的‘color-interpolation’或‘color-rendering’属性未实现或不适用,实现必须按照它们的初始值进行操作。)

6. (X)HTML的样式表示例

本附录是说明性的,不具规范性。此样式表可供实现作为HTML4、XHTML1、XHTML1.1、XHTML Basic及其他XHTML系列文档的默认样式的一部分使用。

html {
	color: black;
	background: white;
}

/* 传统桌面用户代理的超链接颜色 */
:link    { color: blue; }
:visited { color: purple; }

/* 默认焦点轮廓 */
:focus {
	outline: 1px dotted;  /* 或 1px dotted invert */
}

7. 配置文件

每个使用CSS3 Color的规范必须定义其允许和排除的CSS3 Color功能子集,并描述该子集所有组件的本地含义。

非规范性示例:

CSS3 Color配置文件
规范 HTML4
接受 基础颜色关键字
RGB六位十六进制颜色值
排除 color’属性
opacity’属性
RGB三位十六进制颜色值和RGB功能表示法颜色值
RGBA颜色值
HSL和HSLA颜色值
扩展颜色关键字
currentColor’颜色值
CSS2 UI颜色
transparent’颜色值
额外约束 无。
CSS3 Color配置文件
规范 CSS level 1
接受 color’属性
基础颜色关键字
RGB颜色值
排除 opacity’属性
RGBA颜色值
HSL和HSLA颜色值
扩展颜色关键字
currentColor’颜色值
CSS2 UI颜色
transparent’颜色值
额外约束 无。
CSS3 Color配置文件
规范 CSS level 2
接受 color’属性
基础颜色关键字
RGB颜色值
CSS2 UI颜色
transparent’颜色值
排除 opacity’属性
RGBA颜色值
HSL和HSLA颜色值
扩展颜色关键字
currentColor’颜色值
额外约束 transparent’颜色值不适用于‘color’属性。
orange’颜色值(属于扩展颜色关键字)在CSS level 2修订版1中被接受。
CSS3 Color配置文件
规范 SVG 1.0 和 1.1
接受 color’属性
opacity’属性
基础颜色关键字
RGB颜色值
CSS2 UI颜色
扩展颜色关键字
currentColor’颜色值
排除 RGBA颜色值
HSL和HSLA颜色值
transparent’颜色值
额外约束 currentColor’颜色值不适用于‘color’属性。

8. 测试套件

一个CSS Color模块的测试套件已经开发出来,尽管可能会添加更多测试。此测试套件旨在允许用户代理验证其对规范的基本符合性。此测试套件并不声称是详尽的,也不涵盖所有可能的数值颜色值。这些测试可在以下地址找到:https://test.csswg.org/harness/suite/css-color-3_dev/

9. 未来功能

本节非规范性。

一些与色彩管理相关的功能,如用于指定ICC配置文件的‘@color-profile’规则、控制这些配置文件的渲染意图的方法以及使用这些配置文件的方式(‘color-profile’属性)因当时缺乏实现兴趣而从CSS Color 3中移除。

相关功能的开发在CSS Color 4和5中继续;参见‘color()函数,‘@color-profile’规则,以及‘rendering-intent’描述符。

10. 致谢

感谢Brad Pettit为编写色彩配置文件和实现它所做的贡献。感谢Steven Pemberton对HSL颜色的编写。特别感谢Marc Attinasi、Bert Bos、Joe Clark、fantasai、Patrick Garies、Tony Graham、Ian Hickson、Susan Lesch、Alex LeDonne、Cameron McCormack、Krzysztof Maczyński、Chris Moschini、Chris Murphy、Christoph Päper、David Perrell、Jacob Refstrup、Dave Singer、Jonathan Stanley、Andrew Thompson、Russ Weakley、Etan Wexler、David Woolley、Boris Zbarsky、Steve Zilles、XSL工作组的XSL FO小组以及所有www-style社区的反馈。还要感谢Chris Lilley作为CSS Color领域的专家。

11. 更改

2021年8月5日推荐以来的更改

进行了以下编辑更正:

2018年6月19日推荐以来的更改

2017年12月5日候选推荐以来的更改

2011年6月7日推荐以来的更改

本文件与2011年6月7日推荐的不同之处在于,它包含以下更改:

有关早期草案的更改,请参见先前推荐中的更改及其中链接的先前版本。

先前的意见处理:

12. 参考文献

12.1. 规范性参考

[COLORIMETRY]
Colorimetry, Third Edition. CIE 15:2004. ISBN 978-3-901906-33-6
[CSS21]
Bert Bos等。层叠样式表第2级修订版1 (CSS 2.1) 规范。 2011年6月7日。W3C 推荐。URL: http://www.w3.org/TR/2011/REC-CSS2-20110607
[SRGB]
多媒体系统和设备 - 颜色测量和管理 - 第2-1部分:颜色管理 - 默认RGB颜色空间 - sRGB。 IEC 61966-2-1 (1999-10) ISBN: 2-8318-4989-6 - ICS 代码: 33.160.60, 37.080 - TC 100 - 51 页。经修订A1:2003。URL: https://webstore.iec.ch/publication/6168
[SVG11]
Erik Dahlström等。可缩放矢量图形 (SVG) 1.1 (第二版)。 2011年8月16日。W3C 推荐。URL: http://www.w3.org/TR/2011/REC-SVG11-20110816/

12.2. 参考性参考

[CSS-UI-3]
Tantek Çelik; Florian Rivoal. CSS基本用户界面模块第3级 (CSS3 UI)。 2018年6月21日。W3C推荐。URL: https://www.w3.org/TR/2018/REC-css-ui-3-20180621/
[CSS2]
Bert Bos等。层叠样式表,第2级 (CSS2) 规范。 2011年6月7日。W3C推荐。URL: http://www.w3.org/TR/2011/REC-CSS2-20110607
[HTML401]
Dave Raggett; Arnaud Le Hors; Ian Jacobs. HTML 4.01 规范。 1999年12月24日。W3C推荐。URL: http://www.w3.org/TR/1999/REC-html401-19991224
[OEB101]
开放电子书(tm) 发布结构 1.0.1。 开放电子书论坛(tm)。2001年7月2日。URL: https://www.loc.gov/preservation/digital/formats/fdd/fdd000054.shtml
[SVG10]
Jon Ferraiolo. 可缩放矢量图形 (SVG) 1.0 规范。 2001年9月4日。W3C推荐。URL: http://www.w3.org/TR/2001/REC-SVG-20010904
[WCAG20]
Ben Caldwell等。Web内容可访问性指南 (WCAG) 2.0。 2008年12月11日。W3C推荐。URL: http://www.w3.org/TR/2008/REC-WCAG20-20081211/
[X11COLORS]
Wikipedia X11颜色名称。 URL: https://en.wikipedia.org/wiki/X11_color_names
[XML10]
C. M. Sperberg-McQueen等。可扩展标记语言 (XML) 1.0(第五版)。 2008年11月26日。W3C推荐。URL: http://www.w3.org/TR/2008/REC-xml-20081126/

索引

属性索引

属性 初始值 应用于 继承 百分比
color <color> | inherit 取决于用户代理 N/A
opacity <alphavalue> | inherit 1 N/A