小编Eca*_*aru的帖子

CSS 变量继承和回退

我的问题是为什么 CSS 变量需要添加回退的概念,而不是像其他 CSS 属性一样依赖继承。

例如:

:root {
 --color1: red;
}

body {
 color: var(--color1);
}

body p {
 color: var(--color2);
 --color2: blue;
}

body span {
  --color3: green;
  color: var(--color3);
  color: yellow;
  color: var(--color4);
}
Run Code Online (Sandbox Code Playgroud)
<body>
  Text 1
  <p>
    Text 2
  </p>
  <span>
    Text 3
  </span>
</body>
Run Code Online (Sandbox Code Playgroud)

文本 3 最终变成红色而不是绿色或黄色。尽管级别上存在有效属性,但它采用父颜色值,而不是验证同一级别上是否还有其他有效值。当变量名称无效时会发生这种情况。

显然,CSS 变量有一个特殊的回退,因此您需要使用以下内容:

color: var(--color4, yellow);
Run Code Online (Sandbox Code Playgroud)

但这又意味着颜色的重复,因为

color: var(--color4, --color3);
Run Code Online (Sandbox Code Playgroud)

不起作用。既不是:

color: var(--color3, yellow, blue);
Run Code Online (Sandbox Code Playgroud)

或任何其他多个值。

也不支持像inheritcurrentColorinitial等关键字。所以我不确定如何依赖继承,因为显然我需要对给定的值非常明确。在 Firefox 57.0.1 和 Chrome 63 上测试。

我知道 …

css inheritance css-variables

5
推荐指数
2
解决办法
3530
查看次数

标签 统计

css ×1

css-variables ×1

inheritance ×1