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 转换为十进制的计算方法:
十六进制中,8 对应十进制的 8,0 对应十进制的 0
两位十六进制数的权重:第一位(高位)乘以 16^1,第二位(低位)乘以 16^0
计算公式: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完整示例》以获取详尽内容。