问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

用 CSS HSL 來寫顏色吧!(以及更好的方法)

创作时间:
作者:
@小白创作中心

用 CSS HSL 來寫顏色吧!(以及更好的方法)

引用
1
来源
1.
https://blog.kalan.dev/frontend/hsl-and-oklch

在CSS中编写颜色时,通常我们会使用十六进制(HEX)或RGB来定义颜色。然而,这两种方式都存在一些问题。十六进制格式对人类来说不容易阅读,例如#27cc95,仅凭这些数字很难想象出颜色是什么样子。虽然十六进制容易解析,但通过三原色的多寡来呈现颜色并不直观。

此外,在设计系统中,相同色系的颜色会根据各种亮度制作色盘,方便设计师配色。然而,即使是颜色的亮度发生变化,HEX或RGB也可能出现极大不同。例如,#BEDBFE#1E40AF,前者比后者亮,但仅从HEX或RGB的表现方式中很难看出这一点。

CSS和浏览器的大幅进化后,现在可以用一个更容易理解颜色定义的格式——HSL来写颜色。

HSL是什么

HSL是用人类比较容易理解的方式来表达颜色,分为H(色相)、S(饱和度)、L(亮度)三个维度。色相环以正上方为0度开始,分别对应红橙黄绿蓝靛紫橘等颜色。

在CSS中,hsl可以这样表示:

.my-color {
  color: hsl(220deg, 30%, 20%);
}

在看到实际颜色之前,我们就可以知道以下信息:

  • 在色相的220度,大概会是偏蓝的颜色
  • 是个饱和度偏低、有点暗(或者说是暗色)的蓝

感知亮度会随色相改变

尽管HSL用起来很直观,但有些颜色尽管HSL的亮度相同,人眼感觉起来仍然比较亮。最显而易见的例子是黄色。例如,hsl(236deg,100%,50%)hsl(61deg, 100%, 50%),同样是亮度50%,黄色看起来就是比较亮。这是由于每个颜色波长不同的原因。

HSL作为设计工具

在非纯色背景中呈现文字时,可以通过调整饱和度与亮度让整体更加和谐。例如,可以减少背景色的饱和度并降低亮度,除了使用黑色外还可以染上一点背景色,使颜色看起来更协调。

HSL只支持sRGB色彩空间

sRGB是最广泛使用的色彩空间,涵盖了大多数显示器和网络应用的色域。然而,像Apple推出的P3等更广的色彩空间,可以在高端显示器上展现更丰富的色彩范围。

HSL的下一步——OKLCH

为了解决HSL中颜色感知亮度的问题,CSS4推出了新的颜色定义方式——OKLCH。OKLCH不仅能更准确地反映人眼对亮度的感知,还支持更广的色彩空间如P3,并能自动匹配最接近的可渲染颜色。

总结

在网页开发中,传统的HEX和RGB颜色表示法虽然广泛使用,但存在不易阅读和直觉性不足的缺点。HSL通过色相、饱和度和亮度三个维度来描述颜色,使得颜色的调整更加人性化。然而,HSL也存在局限性,例如不同色相的感知亮度不同。CSS4推出的OKLCH作为解决方案,不仅提升了颜色表现力,还支持更广的色彩空间,为未来的色彩标准做好了准备。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号