`currentBackgroundColor` 能否成为有效、有用的 CSS 颜色值关键字?

Could `currentBackgroundColor` become a valid, useful CSS color value keyword?

CSS3 defines currentColor 作为等同于元素 color 属性 的颜色。它有点像 CSS 变量,但基于每个元素。当 currentColor 用作任何 CSS 属性 中的颜色值时,它会计算应用它的元素的 color 值。

所以,我的问题不是 currentBackgroundColor 是否存在 ——我已经梳理了 CSS3 Color specification 并且相当有信心它不存在——而是是否它可能存在。

借用 currentColor 的定义,我认为 currentBackgroundColor 会被定义为:

The value of the ‘background-color’ property. The computed value of the ‘currentBackgroundColor’ keyword is the computed value of the ‘background-color’ property. If the ‘currentBackgroundColor’ keyword is set on the ‘background-color’ property itself, it is treated as ‘background-color: inherit’.

任何人都可以指出我可能没有考虑的任何实施问题吗?

是的,可以。例如,创建一段反色文本非常容易,即您可以交换前景色和背景色以突出显示某些内容。

但是,建议将此作为 CSS 功能将是逆潮流而动。曾经有一大堆 CSS 颜色关键字,例如滚动条颜色、标准按钮颜色以及按钮上 3D 阴影的颜色……但它们都从 CSS 前段时间.

CSS 中有很多可能有用但不存在的内容。就我个人而言,我对 CSS 变量更感兴趣。当它们成为主流时,我们不太可能太担心像这样的颜色关键词

Can anyone point to any implementation issues which I may not be considering?

是的。可能存在循环依赖:

* {
  background-color: currentColor;
  color: currentBackgroundColor;
}

此外,currentcolor 很有用,因为文本只有一种颜色。但是背景可以有额外的东西,比如背景图像等等,这可能违反直觉将 background-color 设置为默认值 transparent。然后currentBackgroundColor 用处不大。

肯定有很多情况 currentBackgroundColor 会非常有用。 我使用的替代技术是...

  1. CSS 自定义属性(CSS 变量),例如 --backgroundColor.
  2. 利用currentColor设置background-color。这种方法只适用于不使用前景色的容器(和特定的子容器)。子元素可以继承color,设置background-color:currentColor.

background: inherit 对我有用。 基本上继承父背景颜色。