从下面的笔中可以看出,使用 calc 的 css 变量似乎不尊重变量的级联性质:
:root {
--font-size-mult: 1;
--font-size: calc(var(--font-size-mult) * 16px);
}
* {
font-size: var(--font-size);
}
.large {
--font-size-mult: 2;
}
Run Code Online (Sandbox Code Playgroud)
预期的行为是文档中任何具有 .large 类的部分的字体大小都是常规 16px 的两倍。从示例中可以看出,如果我重新定义 .large 内部的 font-size 变量,我会得到所需的行为,但这似乎违反直觉,因为 --font-size 的值已经是它需要的值解析为正确的值。
我测试过的所有浏览器似乎都是这种情况,所以它可能是规范的一部分,但它似乎不太适合 CSS 的工作方式。我认为变量值将根据当前元素范围内其他变量的值来计算,而不是根据变量定义的范围来计算。
https://codepen.io/Smilebags/pen/MrRKMY
这是预期的行为吗?应该是这样吗?