CSS color-mix() 函数

CSS color-mix() 语法

在 CSS 中,color-mix() 函数用于将两种颜色进行混合,然后生成一种新的颜色值。

使用 color-mix() 函数,我们可以根据指定的比例来混合颜色,并且可以选择不同的颜色空间(如 srgb、hsl、lab 等)来控制混合效果。

语法:

color-mix(in colorspace, color1 [percentage], color2 [percentage])

说明:

color-mix() 函数接收以下参数。

  • in colorspace(必选):用于指定颜色混合时使用的颜色空间。例如:
    • srgb(默认):标准红绿蓝颜色空间。
    • hsl:色相、饱和度、亮度颜色空间。
    • hwb:色相、白色、黑色颜色空间。
    • lab:更接近人眼感知的颜色空间。
    • lch:在 lab 的基础上进一步优化。
  • color1 和 color2 (必选):用于指定要混合的两种颜色。你可以使用任何有效的 CSS 颜色值,包括:
    • 颜色名(如 blue)。
    • 十六进制颜色值(如 #fff)。
    • rgb() 颜色值(如 rgb(255, 0, 0))。
  • percentage(可选):用于指定每种颜色的混合比例,范围是 0% 到 100%。如果未指定,才会采用默认值(即 50%),此时表示等量混合。

示例:

color-mix(in srgb, red 70%, blue 30%);      /* 70% 红色和 30% 蓝色 */
color-mix(in hsl, yellow 60%, blue 40%);    /* 60% 黄色和 40% 蓝色 */

在使用 color-mix() 函数时,小伙伴们还需要清楚以下几点:

1. color-mix() 支持多种颜色空间

color-mix() 支持多种颜色空间,如 srgb、hsl、lab 等。它允许你更加精确地控制颜色混合效果。

特别是 lab 颜色空间,它更接近人类的视觉感知,使得颜色的混合更自然。

2. color-mix() 混合比例必须使用百分比

color-mix() 混合比例必须使用百分比值(如 50%)。不支持使用无单位的数字。

示例:

color-mix(in srgb, red 30%, green 70%);    /* 30% 红色和 70% 绿色 */

3. color-mix() 可以与其他 CSS 函数结合使用

color-mix() 函数可以与其他 CSS 函数(如 var()calc() 等)结合使用,从而实现更动态的效果。

示例:

background-color: color-mix(in hsl, var(--primary-color), var(--secondary-color));

4. 无效颜色值的处理

如果混合的颜色值无效(例如无效的颜色格式),那么浏览器会回退使用默认颜色,通常是透明或继承值。

CSS color-mix() 摘要

属于 CSS 函数
使用频率
兼容性 查看
官方文档 查看
MDN 查看

CSS color-mix() 示例

接下来,我们通过几个简单的例子来讲解一下 CSS color-mix() 函数是如何使用的。

示例 1:color-mix() 基本用法

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        div {
            width: 200px;
            height: 100px;
            background-color: color-mix(in srgb, red 50%, blue 50%);
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

页面效果如下图所示。

color-mix() 基本用法

分析:

color-mix(in srgb, red 50%, blue 50%) 表示将红色和蓝色以 50% 的比例在 srgb 颜色空间中混合,最终生成紫色(即 rgb(128, 0, 128))。

示例 2:color-mix() 使用 HSL 颜色空间混合

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        div {
            width: 200px;
            height: 100px;
            background-color: color-mix(in hsl, hsl(120, 100%, 50%) 70%, hsl(240, 100%, 50%) 30%);
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

页面效果如下图所示。

color-mix() 使用 HSL 颜色空间混合

分析:

在这个例子中,我们使用 hsl 颜色空间来将绿色(hsl(120, 100%, 50%))和蓝色(hsl(240, 100%, 50%))以 70% 和 30% 的比例混合,最终结果是一个偏绿的混合色。

示例 3:color-mix() 结合 CSS 变量

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        :root {
            --primary-color: #ff0000;
            --secondary-color: #0000ff;
        }
        div {
            width: 200px;
            height: 100px;
            background-color: color-mix(in srgb, var(--primary-color) 60%, var(--secondary-color) 40%);
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

页面效果如下图所示。

color-mix() 结合 CSS 变量

分析:

在这个例子中,我们定义了 2 个 CSS 变量:--primary-color 和 --secondary-color。然后,使用 color-mix() 函数动态混合红色和蓝色(60% 和 40%)。

示例 4:color-mix() 实现响应式颜色混合

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        div {
            height: 100px;
            background-color: color-mix(in lab, yellow 50%, green 50%);
        }
        @media (max-width: 1200px) {
            div {
                background-color: color-mix(in lab, yellow 80%, green 20%);
            }
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

当浏览器尺寸大于 1200px 时,页面效果如下图 1 所示。当浏览器尺寸小于等于 1200px 时,页面效果如下图 2 所示。

color-mix() 实现响应式颜色混合 1

color-mix() 实现响应式颜色混合 2

分析:

在这个例子中,color-mix() 使用 lab 颜色空间以 50% 来混合黄色和绿色。

然后,我们使用 CSS 媒体查询,使得当屏幕宽度小于等于 1200px 时,混合比例调整为 80% 黄色和 20% 绿色,从而生成更亮的颜色。

上一篇: hsla()

下一篇: linear-gradient()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号