contrast-color()
contrast-color() CSS 函数接受一个 color 值并返回一个对比色。此函数通常确保 WCAG AA 最低对比度。浏览器可能会使用不同的、更好的算法。
contrast-color() 使您可以轻松地指定文本颜色并自动生成对比鲜明的背景颜色,反之亦然。它避免了维护背景-文本颜色对的需要。
语法
css
contrast-color(red)
contrast-color(var(--backgroundColor))
参数
返回值
white 或 black 的 <named-color> 值。
描述
contrast-color() 函数返回 white 或 black 值,具体取决于哪个值与输入颜色对比度最大。如果 white 和 black 与输入颜色具有相同的对比度,则返回 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 |
浏览器兼容性
加载中…
另见
contrast()- CSS 颜色模块
- CSS 自定义属性和
var() prefers-contrast和prefers-color-scheme@media特性- WCAG:颜色对比度
- 如何在 CSS 中让浏览器选择对比色(webkit.org,2025)
- WebAIM 对比度检查器(webaim.org,2025)