contrast-color()

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

contrast-color() CSS 函数接受一个 color 值并返回一个对比色。此函数通常确保 WCAG AA 最低对比度。浏览器可能会使用不同的、更好的算法。

contrast-color() 使您可以轻松地指定文本颜色并自动生成对比鲜明的背景颜色,反之亦然。它避免了维护背景-文本颜色对的需要。

语法

css
contrast-color(red)
contrast-color(var(--backgroundColor))

参数

color

任何有效的 <color> 值。

返回值

whiteblack<named-color> 值。

描述

contrast-color() 函数返回 whiteblack 值,具体取决于哪个值与输入颜色对比度最大。如果 whiteblack 与输入颜色具有相同的对比度,则返回 white

警告:WCAG AA (4.5:1) 对比度并非在所有情况下都能产生清晰可读的文本。中等色调的背景颜色通常无法与黑色或白色前景提供足够的对比度。例如,在皇家蓝色(#2277d3)背景上使用 contrast-color() 会产生黑色文本,这对于小文本来说是不可读的。因此,建议将浅色或深色与 contrast-color() 函数一起使用。

示例

按钮的对比文本

在以下示例中,当您更改提交 <button> 文本的背景颜色时,浏览器会自动为其应用对比色。

css
:root {
  --button-color: lightblue;
}

button {
  background-color: var(--button-color);

  /* Set contrasting text color automatically */
  color: contrast-color(var(--button-color));
}

浅色和深色模式使用

在以下示例中,prefers-color-scheme 媒体查询用于根据操作系统或浏览器配色方案设置背景颜色。contrast-color() 函数用于自动设置文本颜色。

尝试更改浏览器或操作系统的深色模式设置以查看效果。

css
:root {
  --background-color: navy;
}

@media (prefers-color-scheme: light) {
  :root {
    --background-color: wheat;
  }
}

body,
a {
  background-color: var(--background-color);
  color: contrast-color(var(--background-color));
}

规范

规范
CSS 颜色模块第五版
# contrast-color

浏览器兼容性

另见