除了RGB外,颜色也可以使用 hsl()
函数符被定义为色相-饱和度-明度(Hue-saturation-lightness)模式。
背景
日常写样式代码时,常用的颜色表示方式有以下几种:
颜色关键字
颜色关键字表示法通过英文单词来表示对应颜色,这些颜色通过关键词定义便于记忆和快速使用。
但是这些颜色大多为不带透明度的颜色(关键字transparent
除外,它代表的颜色是rgba(0, 0, 0, 0)
)。
例如:
关键字 | 对应颜色 |
---|---|
black | #000 |
white | #fff |
red | #f00 |
yellow | #ff0 |
blue | #00f |
pink | #ffc0cb |
indigo | #cb0082 |
grey | #808080 |
green | #008000 |
tranparent | rgba(0, 0, 0, 0) |
十六进制表示法
十六进制表示法的基本语法是#XXXXXX
,其中X
代表一个0-F
的数字(16进制)。
它也不支持颜色透明度的设定(在CSS里)。
如果在CSS中使用时,十六进制中a-f
大小写都可以支持。
不过最佳实践建议适用小写字母来表示颜色。并且如果颜色格式为#aabbcc
建议缩写为#abc
。
RGB与RGBA表示法
RGB
与RGBA
是CSS里定义好的用于表示颜色的内置函数,后者相比于前者多了一个用于表示透明度的参数。
R-G-B
分别表示Red
,Green
,Blue
。这三位的取值范围都为0-255
或者0%-100%
,100%
与255
表示的意义相同,都为FF。有两点需要注意:
- 不能接受小数作为参数。
- 整数与百分数的形式不可混用。
Alpha
透明度值的取值范围为0-1
,可以设置这个范围内的任意小数,并且在小数以0开始的时候可以省略0
。
如rgba(255, 0, 0, .35)。
HSL与HSLA表示法
HSL
和HSLA
是CSS定义的另外2种表示颜色的内置函数,后者比前者多的仍然是用于表示透明度的参数,且取值范围同上。
HSL分别代表Hue
(色相),Saturation
(饱和度),Lightness
(明度)。分别代表的意义:
- 色相 表示颜色在色环上的角度。用一个无单位的整数来表示。并且
0=360=red
,其它颜色在色环上均匀分布。所以green=120
,blue=240
。 - 饱和度 表示颜色的饱和程度。 用一个百分数来表示。
100%
代表满饱和度,0%
代表一种灰度。一般颜色设置为满饱和度
。 - 明度 表示颜色的明亮程度。 用一个百分数来表示。
100%
代表白色,0%
代表一种黑色。50%
的明度是一般的(常见颜色的明度)。
所以常用的颜色用HSL表示法为hsl(0, 100%, 50%)
(表示红色,#f00
)。而减小明度,表示深色,增大明度表示浅色。如:
1 | color: hsl(0, 100%, 25%); /* 深红 */ |
优点: HSL颜色表示法在同种颜色间调整是线性可控的,比如我要将深绿色调整为浅绿色,只需要对应地调整其明度就可以。在一些特殊的场景里,这种颜色的表示方法更方便使用。
举例:
- 你是色盲吗小游戏,需要生成随机颜色的对应的颜色相近但是不同的颜色。
- 动画里的颜色调整。
兼容性
IE9+
详情见Can I Use