CSS 颜色函数:用代码调配色彩的魔法

更新日期: 2025-11-01 阅读: 45 标签: 颜色

很多人刚开始学 css 时,觉得它只是用来设定颜色、大小和位置的工具。你告诉它怎么做,它就怎么做,像是一本被动的样式手册。

但现在的 CSS 已经不一样了。它不再只是静态的样式表,而是可以计算、可以表达逻辑、可以动态变化的语言。函数,就是这种变化中最重要的一部分。

从最早的 calc() 和 var(),到现在的 color-mix()、sin() 等,CSS 正在变成一个可以“编程”的工具。这篇文章,我们先来聊聊 CSS 中那些和颜色有关的函数。


CSS 函数是什么?

CSS 函数不是传统编程中的函数,不会执行复杂的逻辑判断。它更像是一个“值的生成器”:你输入一些参数,它返回一个结果,这个结果可以直接用在 CSS 属性里。

比如,你可以用它来计算颜色、调整透明度,甚至混合两种颜色。这让配色不再是固定的,而是可以灵活变化的。


常用的颜色函数

1. rgb():不只是红绿蓝

rgb() 大家应该不陌生,它用红、绿、蓝三个通道的值来表示颜色。过去我们习惯用逗号分隔:

color: rgb(255, 0, 0); /* 红色 */

这是旧版的写法。新语法中,你可以不用逗号,直接用空格分隔:

color: rgb(255 0 0); /* 红色 */

如果你要设置透明度,可以加上 / 和 alpha 值:

color: rgb(255 0 0 / 0.5); /* 半透明红色 */

更强大的是,rgb() 还支持“相对计算”。你可以基于某个颜色,调整它的某个通道:

color: rgb(from #336699 r g calc(b + 50));

这句代码的意思是:从 #336699 这个颜色开始,保持红和绿通道不变,把蓝色通道的值加 50。

这种写法特别适合在主题色基础上微调,比如 hover 时让颜色变亮一点。

2. color():指定色彩空间

color() 函数可以让你使用不同的色彩空间来定义颜色,比如 P3 广色域:

color: color(display-p3 1 0 0); /* P3 色域下的红色 */

它的语法和 rgb() 类似,但多了一个色彩空间参数。常用的色彩空间有 display-p3、rec2020 等,能显示更鲜艳的颜色。

3. hsl():更直观的调色方式

hsl() 用色相、饱和度、亮度来定义颜色,对设计师更友好:

color: hsl(120 100% 50%); /* 纯绿色 */
  • 色相(H):0-360,代表颜色种类

  • 饱和度(S):0%-100%,颜色鲜艳程度

  • 亮度(L):0%-100%,明暗程度

调整亮度就能轻松得到同色系的深浅变化,非常适合制作配色系统。

4. 其他颜色空间函数

CSS 还支持很多专业的色彩空间:

  • hwb():色相、白度、黑度

  • lab()、oklab():基于人眼感知的色彩空间

  • lch()、oklch():亮度、色度、色调

这些函数让颜色显示更准确,特别是在不同设备上。不过要注意浏览器兼容性,有些新函数在老浏览器中可能不支持。

5. color-mix():颜色混合器

这是最让人兴奋的函数之一。color-mix() 可以把两种颜色混合在一起,得到新的颜色:

color: color-mix(in srgb, red, blue); /* 红色和蓝色混合 */

默认情况下,两种颜色各占 50%。你也可以指定比例:

color: color-mix(in srgb, red 30%, blue 70%); /* 30%红 + 70%蓝 */

第一个参数 in srgb 指定混合使用的色彩空间。你还可以用 in hsl、in oklch 等,在不同空间混合会得到不同的结果。

这个功能以前需要借助 Sass 或 Less 才能实现,现在 CSS 原生就支持了。


实际应用场景

主题色系管理

你可以用一个主色,通过计算得到一系列辅助色:

:root {
  --primary: #2e86ab;
  --primary-light: rgb(from var(--primary) r g calc(b + 30));
  --primary-dark: rgb(from var(--primary) calc(r - 30) g b);
}

交互状态颜色

鼠标悬停时的颜色变化,现在可以自动计算:

button {
  background: var(--primary);
  
  &:hover {
    background: rgb(from var(--primary) calc(r + 20) calc(g + 20) calc(b + 20));
  }
}

颜色混合实战

制作一个从红到蓝的渐变背景:

.hero {
  background: color-mix(in oklch, var(--accent), transparent 40%);
}


注意事项

  1. 浏览器兼容性:新函数在旧浏览器中可能不支持,使用时最好准备回退方案:

color: #2e86ab; /* 回退色 */
color: color(display-p3 0.3 0.5 0.8);
  1. 性能考虑:复杂的颜色计算会增加渲染负担,但现代浏览器优化得很好,影响很小。

  2. 色彩空间选择:srgb 最安全,display-p3 显示范围更广,oklch 和 oklab 感知上更均匀。


结语

CSS 的颜色函数,让我们从“挑选颜色”进入了“设计颜色系统”的时代。你可以用数学关系来定义颜色之间的逻辑,让配色变得更有条理、更灵活。

亮与暗、主与次、冷与暖,现在都可以用代码精确控制。这不仅是语法的进步,更是设计思维的升级。

试着在你的下一个项目中用上这些颜色函数,你会发现,CSS 比你想象的更强大。


注:本文涉及的 CSS 函数均基于最新标准,部分功能可能需要较新的浏览器版本支持。实际开发时建议查看 Can I Use 网站了解具体兼容情况。

本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!

链接: https://fly63.com/article/detial/13109

css常用的颜色单位表示法

所有的颜色都可以由红、绿、蓝三原色调配而成。 CSS中用8位表示一个颜色,那么可以有28即256种颜色,所以总共可以表示256*256*256种颜色。CSS纵有多种颜色表示: 十六进制表示法、rgb表示法、hsl色相表示法、hsla色相表示法

css颜色模式hsla和rgba

在CSS3中可以使用RGBA和HSLA两种色彩模式,这两个都可以用来设置颜色以及指定透明度。RGBA无法直观看出是什么颜色。并且如果想要对颜色进行调整也无法简单做到

网页设计中的色彩心理学

我们大多数人没有意识到它是如何工作的,只有少数人可能会注意到。虽然颜色的影响可能被高估了,但是我们可以在某些情况下明显地感觉到它(想象你自己在一个暗红色的房间里或者在天空颜色的房间里)。

::after 1px 间隔线在 Safari 显示颜色不同于其它的问题

细找问题,找出来了,我在 ::after 内写的是 border-bottom ,也就是说,在纵向压缩的时候,压缩的是 border。换成用 background-color ,也就是用 after 的主体。

Js计算颜色对比度

某些网站和服务允许您通过上传图片,更改背景颜色或设计的其他方面来自定义您的个人资料。作为客户,此个性化将Web应用程序转换为您存储数据的小窝。

RGB、HSL、Hex网页色彩码,看完这篇全懂了

网页使用到的色彩标示方法中,从古早时期大家都在用的16进位码(#000000)、RGB色值标示、HSL色彩标示,其中网页设计师最常使用的16进位色码标示法,而16进位码又是如何计算色彩的呢?

CSS Color Adjust 速览

近来,各大平台的操作系统纷纷引入 Dark Mode 深色模式,包括 Windows、MacOS 以及 Android 甚至 iOS 13 也将引入该模式。深色模式引入的同时,同时允许我们基于用户的偏好设计特定的样式

HTML常用的颜色表【代码色彩表 】

以下是DIVCSS5整理常用的HTML颜色表,参考,直接找到自己需要的html颜色值拷贝颜色值代码即可使用(除了以下颜色表外,你还可以使用PS软件获取颜色值:http://www.divcss5.com/html/h635.shtml)。

常用颜色表之中国传统颜色

不知道大家觉得如何,舒适的颜色,很多人都会喜欢,但主要还是看实用性。今天给大家分享中国传统颜色有那些?中国传统的颜色之美,美如其名:蔚蓝、竹青、绯红、月白、石青、紫檀、霜色、黛绿、胭脂、藕荷、豆绿、宝蓝、秋香、玄色、牙色、黄栌、靛蓝、明黄、朱砂、石绿

css中颜色

假设在设置页面的颜色时觉得一部分很小的颜色集中就足够了,就可以直接给定颜色的名称。CSS称这些有名称的颜色为命名颜色。命名颜色的关键字有限,css定义了17个标准色:浅绿色,黑色,蓝色

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!