CSS Color(CSS 颜色)是层叠样式表(Cascading Style Sheets)中用于设定元素色彩的关键属性,使开发者能够精确控制文本、背景、边框等视觉元素的色调。借助多种丰富而灵活的色彩定义方式,CSS 实现了对颜色的精细调控。接下来,我们将系统解析其具体实现方法与应用技巧。

一、颜色关键字(Color Keywords)

直接使用预定义的颜色名称,语法简洁直观。

1.1 基本颜色关键字

CSS 定义了 16 种基本颜色(CSS1/2 标准),如:

p { color: red; }     /* 红色 */
p { color: blue; }    /* 蓝色 */
p { color: black; }   /* 黑色 */
p { color: white; }   /* 白色 */
1.2 扩展颜色关键字

CSS3 扩展了大量颜色名称(共 147 种),如:

p { color: tomato; }      /* 番茄红 */
p { color: skyblue; }     /* 天蓝色 */
p { color: mediumseagreen; } /* 中海绿色 */
1.3 系统颜色关键字

与操作系统主题关联的颜色,如:

p { color: ButtonText; }   /* 按钮文本颜色 */
p { color: LinkText; }     /* 链接文本颜色 */
  • 备注:系统颜色在现代 CSS 中已较少使用,建议使用自定义颜色以保证跨平台一致性。

二、十六进制颜色(Hexadecimal Colors)

通过红(R)、绿(G)、蓝(B)三通道的十六进制值表示颜色,是 web 开发中最常用的颜色格式。

2.1 六位十六进制(标准)

格式:#RRGGBB,其中 RR、GG、BB 分别为 00-FF 的十六进制值(对应十进制 0-255)。

十六进制数值系统

  • 十六进制是一种基数为16的计数系统,使用数字0-9和字母A-F(或a-f)来表示数值。

  • 每一位的权重是16的幂次,从右往左依次为16⁰, 16¹, 16²...。

00-FF的数值范围:

  • 00 是两位十六进制数的最小值,转换为十进制是 0。

  • FF 是两位十六进制数的最大值,转换为十进制是 255。

示例:

p { color: #FF0000; }   /* 红色(R=255, G=0, B=0) */
p { color: #0000FF; }   /* 蓝色(R=0, G=0, B=255) */
p { color: #336699; }   /* 深蓝色 */
2.2 三位十六进制(简写)

若三通道的值两两相同,可缩写为 #RGB (自动扩展为 #RRGGBB)。

示例

p { color: #F00; }      /* 等价于 #FF0000(红色) */
p { color: #00F; }      /* 等价于 #0000FF(蓝色) */
p { color: #369; }      /* 等价于 #336699(深蓝色) */
2.3 八位十六进制(带透明度)

CSS3 新增,格式:#RRGGBBAA ,其中 AA 为 alpha 通道(透明度,00=完全透明,FF=完全不透明)。  

示例:

p { color: #FF000080; } /* 半透明红色(alpha=0.5) */
p { color: #0000FF40; } /* 25% 不透明蓝色 */

理解 #FF000080 中的 80,代表的是 alpha 通道(透明度)。将其转换为 透明度值需要经过以下计算步骤:


步骤一:十六进制到十进制的转换

两位十六进制数 80 转换为十进制的计算方法:

  1. 十六进制中,8 对应十进制的 8,0 对应十进制的 0

  2. 两位十六进制数的权重:第一位(高位)乘以 16^1,第二位(低位)乘以 16^0

  3. 计算公式:8 × 16^1 + 0 × 16^0 = 8 × 16 + 0 × 1 = 128 + 0 = 128

步骤二:归一化到 0-1 范围

Alpha 通道在 CSS 中的取值范围是 0(完全透明)到 1(完全不透明),而两位十六进制数的十进制范围是 0-255。因此需要将十进制值归一化:

  • 透明度 = 十进制值 ÷ 255

  • 对于 128:128 ÷ 255 ≈ 0.50196,通常四舍五入为 0.5

三、RGB 与 RGBA

通过红、绿、蓝三通道的十进制值表示颜色,RGBA 在此基础上增加了 alpha 通道(透明度)。

3.1 RGB

格式:rgb(r, g, b) 或 rgb(r g b)(空格分隔),其中 r、g、b 可为:  

  • 整数(0-255);

  • 百分比(0%-100%)。

示例:

p { color: rgb(255, 0, 0); }        /* 红色(整数) */
p { color: rgb(100%, 0%, 0%); }     /* 红色(百分比) */
p { color: rgb(51, 102, 153); }     /* 深蓝色(整数) */
3.1 RGBA

格式:rgba(r, g, b, a) ,其中 a 为透明度(0=完全透明,1=完全不透明)。

示例:

p { color: rgba(255, 0, 0, 0.5); }  /* 半透明红色 */
p { color: rgba(0, 0, 255, 0.25); } /* 25% 不透明蓝色 */

四、HSL 与 HSLA

基于色相(Hue)、饱和度(Saturation)、亮度(Lightness)的色彩模型,更符合人眼对颜色的感知,便于调整颜色。

4.1 HSL

格式:hsl(h, s, l),各参数含义:

  • h:色相(0-360°,0=红色,120=绿色,240=蓝色);

  • s:饱和度(0%-100%,0%=灰色,100%=纯色);

  • l:亮度(0%-100%,0%=黑色,50%=正常亮度,100%=白色)。

备:上述中的 l 是大写字母 L 的小写形式,也就是 lightness 的首字母。

示例:

p { color: hsl(0, 100%, 50%); }     /* 红色(色相0°,全饱和,正常亮度) */
p { color: hsl(120, 50%, 50%); }    /* 中等饱和度的绿色 */
p { color: hsl(240, 70%, 60%); }    /* 高饱和度的蓝色 */
4.2 HSLA

格式:hsla(h, s, l, a),增加 alpha 通道控制透明度。

示例:

p { color: hsla(0, 100%, 50%, 0.5); }  /* 半透明红色 */
p { color: hsla(120, 50%, 50%, 0.75); } /* 75% 不透明的绿色 */

五、HWB(色相-白度-黑度)

CSS Color Module Level 4 引入的色彩模型,基于色相(Hue)、白度(Whiteness)、黑度(Blackness),语法更直观。

格式:hwb(h, w, b),各参数含义:

  • h:色相(0-360°,0=红色,120=绿色,240=蓝色);

  • w:白度(0%-100%,混合白色的比例);

  • b:黑度(0%-100%,混合黑色的比例);

  • 可选 alpha 通道:hwb(h, w, b / a)。

示例:

p { color: hwb(0 0% 0%); }      /* 纯红色(无白无黑) */
p { color: hwb(240 30% 20%); }   /* 蓝色,混合30%白色、20%黑色 */
p { color: hwb(120 40% 10% / 0.8); } /* 半透明绿色(白度40%,黑度10%) */

六、LAB 与 LCH(基于 CIELAB 色彩空间)

CSS Color Module Level 4 引入,基于人眼感知的 CIELAB 色彩空间,可表示更广泛的颜色范围(超色域)。

CIELAB

也称为LAB,是一种人眼感知友好的色彩空间,由国际照明委员会(CIE)制定,设计初衷是让色彩的数值差异更接近人类视觉实际感知的差异。

核心特点:设备无关 + 视觉均匀

  • 设备无关:同一LAB值在任何显示/打印设备上应该看起来一致(理论上),解决了RGB/CMYK等设备相关色彩空间的“同值不同色”问题。

  • 视觉均匀:色彩数值的变化幅度与人类感知的颜色变化幅度基本一致,方便进行精准的色彩调整和比较。

6.1 LAB

格式:lab(l, a, b),各参数含义:

  • l:亮度(0-100,0=黑色,100=白色);

  • a:绿-红轴(负值=绿色,正值=红色,范围无严格限制);

  • b:蓝-黄轴(负值=蓝色,正值=黄色,范围无严格限制);

  • 可选 alpha 通道 lab(l, a, b / a)。

LAB用三个数值描述颜色,就像三维坐标:

通道

含义

取值范围

示例说明

l

亮度(Lightness)

0(纯黑)到100(纯白)

L=50 表示中等亮度

a

绿-红轴

负值(绿)到正值(红)

a=-50 偏绿,a=50 偏红

b

蓝-黄轴

负值(蓝)到正值(黄)

b=-50 偏蓝,b=50 偏黄

示例:

p { color: lab(50 0 0); }       /* 灰色(亮度50,无红绿/蓝黄倾向) */
p { color: lab(60 50 0); }      /* 偏红的颜色 */
p { color: lab(70 0 50 / 0.5); } /* 半透明偏黄的颜色 */
6.2 LCH

格式:lch(l, c, h),基于 LAB 的极坐标表示,更直观:

  • l:亮度(Lightness,0-100,0=黑色,100=白色);

  • c:色度(Chroma,颜色的鲜艳程度,0=灰色,值越大越鲜艳);

  • h:色相(Hue 0-360°)。

  • 可选 alpha 通道 lch(l, c, h / a)。

示例:

p { color: lch(50 0 0); }       /* 灰色(无色度) */
p { color: lch(60 50 0); }       /* 红色(色相0°) */
p { color: lch(70 60 240 / 0.5); } /* 半透明蓝色(色相240°) */

七、color() 函数

CSS Color Module Level 4 引入,用于指定不同色彩空间的颜色值,语法更灵活。

格式:color(colorspace params),常见色彩空间包括:

  • srgb:标准 RGB(与 rgb() 等价);

  • srgb-linear:线性 RGB;

  • display-p3:广色域 RGB(支持更多鲜艳颜色);

  • a98-rgb:Adobe RGB;

  • prophoto-rgb:ProPhoto RGB;

  • rec2020:UHD TV 色彩空间。

示例:

p { color: color(srgb 1 0 0); }              /* 标准红色(等价于 rgb(255,0,0)) */
p { color: color(display-p3 1 0 0); }         /* P3 广色域红色(更鲜艳) */
p { color: color(srgb-linear 0 0 1 / 0.5); }  /* 半透明线性蓝色 */

八、currentColor

特殊关键字,继承当前元素的 color 属性值,常用于简化 CSS 代码(如边框、背景色与文本色一致)。

示例:

div {
  color: red;          /* 文本色为红色 */
  border: 2px solid currentColor; /* 边框色继承为红色 */
  background-color: currentColor; /* 背景色继承为红色(文本会看不见,仅作示例) */
}

九、transparent

关键字,表示完全透明的颜色(等价于 rgba(0, 0, 0, 0))。

示例:

p { color: transparent; }  /* 文本完全透明(不可见) */

总结

CSS color 的值种类丰富,可根据需求选择:

  • 快速开发:使用颜色关键字或十六进制;

  • 精确控制:使用 RGB/RGBA、HSL/HSLA;

  • 直观调整:使用 HWB(色相、白度、黑度);

  • 广色域支持:使用 LAB、LCH 或 color()函数(需现代浏览器支持);

  • 复用颜色:使用 currentColor 继承。

选择合适的颜色格式,可提高代码可读性、维护性,并实现更精准的视觉效果。

颜色集

  • CSS 1.0 规范定义了 16 种最基础的 命名颜色(Named Colors),它们是 CSS 中最早支持的颜色集,至今仍被广泛使用。这些颜色有对应的十六进制值,下面是完整列表:

颜色名称

十六进制值

描述

black

#000000

纯黑色

white

#FFFFFF

纯白色

gray

#808080

中灰色

silver

#C0C0C0

银色(浅灰色)

maroon

#800000

褐红色(暗红)

red

#FF0000

纯红色

purple

#800080

紫色

fuchsia

#FF00FF

亮紫色(品红)

green

#008000

纯绿色

lime

#00FF00

亮绿色

olive

#808000

橄榄绿(黄绿)

 yellow

#FFFF00

纯黄色

navy

#000080

深蓝色

blue

#0000FF

纯蓝色

teal

#008080

青绿色(蓝绿)

aqua

#00FFFF

亮青色(水蓝)

  • CSS3(CSS Color Module Level 3)扩展了颜色名称集,从最初的16种增加到了147种。这些颜色基于X11颜色系统,所有现代浏览器都支持。以下是完整列表(按颜色类别分组,包含颜色名称和十六进制值):

颜色值

十六进制值

描述

一、红色系

red

#FF0000

纯红色

maroon

#800000

褐红色(暗红色)

tomato

#FF6347

番茄红(亮红色)

coral

#FF7F50

珊瑚红(带橙调的红色)

orangered

#FF4500

橙红色(红橙色)

crimson

#DC143C

深红色(洋红色)

firebrick

#B22222

火砖红(砖红色)

darkred

#8B0000

暗深红色

二、橙色系

orange

#FFA500

纯橙色

darkorange

#FF8C00

深橙色

gold

#FFD700

金黄色

goldenrod

#DAA520

金棕色(带棕调的金色)

darkgoldenrod

#B8860B

深金棕色

peru

#CD853F

秘鲁棕(浅棕色)

chocolate

#D2691E

巧克力色(深棕色)

saddlebrown

#8B4513

马鞍棕(棕褐色)

三、黄色系

yellow

#FFFF00

纯黄色

yellowgreen

#9ACD32

黄绿色

lime

#00FF00

酸橙色(亮绿色)

limegreen

#32CD32

酸橙绿(带黄调的绿色)

greenyellow

#ADFF2F

绿黄色(带绿调的黄色)

chartreuse

#7FFF00

查特酒绿(黄绿色)

lawngreen

#7CFC00

草坪绿(鲜亮的绿色)

四、绿色系

green

#008000

纯绿色

forestgreen

#228B22

森林绿(深绿色)

seagreen

#2E8B57

海绿色(蓝绿色)

mediumseagreen

#3CB371

中海绿色

darkseagreen

#8FBC8F

深海绿色(灰绿色)

lightgreen

#90EE90

浅绿色

palegreen

#98FB98

苍绿色(极浅的绿色)

springgreen

#00FF7F

春绿色(亮绿色)

mediumspringgreen

#00FA9A

中春绿色

olive

#808000

橄榄绿(黄绿色)

darkolivegreen

#556B2F

深橄榄绿

olivedrab

#6B8E23

橄榄褐(带褐调的橄榄绿)

teal

#008080

青绿色(蓝绿色)

darkcyan

#008B8B

深青色

cadetblue

#5F9EA0

学员蓝(蓝绿色)

mediumaquamarine

#66CDAA

中海蓝色(蓝绿色)

aquamarine

#7FFFD4

海蓝色(浅绿色)

五、青色系

cyan

#00FFFF

纯青色(蓝绿色)

aqua

#00FFFF

水蓝色(同cyan)

lightcyan

#E0FFFF

浅青色

paleturquoise

#AFEEEE

苍绿松石色(极浅的蓝绿色)

turquoise

#40E0D0

绿松石色(蓝绿色)

mediumturquoise

#48D1CC

中绿松石色

darkturquoise

#00CED1

深绿松石色

六、蓝色系

 blue

#0000FF

纯蓝色

navy

#000080

深蓝色(海军蓝)

darkblue

#00008B

深暗蓝色

mediumblue

#0000CD

中蓝色

royalblue

#4169E1

皇家蓝(深蓝色)

cornflowerblue

#6495ED

矢车菊蓝(浅蓝色)

dodgerblue

#1E90FF

道奇蓝(亮蓝色)

deepskyblue

#00BFFF

深天蓝色

skyblue

#87CEEB

天蓝色

lightskyblue

#87CEFA

浅天蓝色

steelblue

#4682B4

钢蓝色(灰蓝色)

lightsteelblue

#B0C4DE

轻钢蓝色

powderblue

#B0E0E6

粉末蓝(浅蓝灰色)

lightblue

#ADD8E6

浅蓝色

七、紫色系

purple

#800080

纯紫色

violet

#EE82EE

紫罗兰色(紫色)

magenta

#FF00FF

洋红色(亮紫色)

fuchsia

#FF00FF

紫红色(同magenta)

darkviolet

#9400D3

深紫罗兰色

darkorchid

#9932CC

深兰花紫(暗紫色)

mediumorchid

#BA55D3

中兰花紫

orchid

#DA70D6

兰花紫(浅紫色)

plum

#DDA0DD

李子紫(浅紫色)

mediumpurple

#9370DB

中紫色

blueviolet

#8A2BE2

蓝紫色

darkmagenta

#8B008B

深洋红色

mediumvioletred

#C71585

中紫罗兰红(紫红色)

palevioletred

#DB7093

苍紫罗兰红(浅紫红色)

八、粉色系

pink

#FFC0CB

纯粉色

lightpink

#FFB6C1

浅粉色

hotpink

#FF69B4

亮粉色(热粉色)

deeppink

#FF1493

深粉色

lavender

#E6E6FA

薰衣草紫(浅紫色)

thistle

#D8BFD8

蓟紫色(灰紫色)

九、白色/灰色系

white

#FFFFFF

纯白色

snow

#FFFAFA

雪白色(微粉色的白色)

honeydew

#F0FFF0

蜜瓜绿(微绿色的白色)

mintcream

#F5FFFA

薄荷奶油色(微绿的白色)

azure

 #F0FFFF

天蓝色(微蓝的白色)

aliceblue

#F0F8FF

爱丽丝蓝(微蓝的白色)

ghostwhite

#F8F8FF

幽灵白(微紫的白色)

whitesmoke

#F5F5F5

 烟白色(浅灰色)

seashell

#FFF5EE

贝壳白(微粉色的浅白色)

beige

#F5F5DC

米色(浅黄灰色)

oldlace

#FDF5E6

旧蕾丝色(微黄的白色)

floralwhite

#FFFAF0

花白色(微黄的白色)

ivory

 #FFFFF0

象牙白(微黄的白色)

antiquewhite

#FAEBD7

古董白(微粉的浅棕色)

linen

#FAF0E6

亚麻色(浅米色)

lavenderblush

#FFF0F5

薰衣草粉(微紫的粉色)

mistyrose

#FFE4E1

雾玫瑰色(微粉的浅红色)

gray

#808080

中灰色(美国拼写)

grey

#808080

中灰色(英国拼写)

dimgray

#696969

暗灰色(美国拼写)

dimgrey

#696969

暗灰色(英国拼写)

darkgray

#A9A9A9

深灰色(美国拼写)

darkgrey

#A9A9A9

深灰色(英国拼写)

silver

#C0C0C0

银色(浅灰色)

lightgray

#D3D3D3

浅灰色(美国拼写)

 lightgrey

#D3D3D3

浅灰色(英国拼写)

gainsboro

 #DCDCDC

淡灰色

black

#000000

纯黑色

十、棕色系

brown

#A52A2A

纯棕色

rosybrown

#BC8F8F

玫瑰棕(带粉调的棕色)

sandybrown

#F4A460

沙棕色(浅棕色)

burlywood

#DEB887

硬木棕(浅棕色)

wheat

#F5DEB3

小麦色(浅黄棕色)

tan

#D2B48C

棕褐色(浅棕色)

khaki

#F0E68C

卡其色(浅黄棕色)

darkkhaki

#BDB76B

深卡其色

  • 以上是CSS3规范定义的全部147(基础色 16种,扩展色 131种)种命名颜色,包含了从基础色系到各种衍生色的完整覆盖,可直接在CSS中通过颜色名称使用,无需记忆复杂的十六进制值。

彩蛋

本文于 Cnb 平台完整呈现了 CSS Color 示例代码,欢迎前往阅读《CSS Color完整示例》以获取详尽内容。