我的问题是为什么 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);
}
<body>
Text 1
<p>
Text 2
</p>
<span>
Text 3
</span>
</body>
文本 3 最终变为红色而不是绿色或黄色。虽然关卡上有有效的属性,但它采用父颜色值,而不是验证同一关卡上是否有其他有效值。当变量名无效时会发生这种情况。
显然 CSS 变量有一个特殊的后备,所以你需要使用类似的东西:
color: var(--color4, yellow);
但这意味着再次重复颜色,因为
color: var(--color4, --color3);
不起作用。既不是:
color: var(--color3, yellow, blue);
或任何其他多个值。
也不支持像inherit , currentColor , initial等关键字。所以我不确定如何依赖继承,因为显然我需要非常明确地使用给定的值。在 Firefox 57.0.1 和 Chrome 63 上测试。