【发布时间】:2020-07-30 03:54:24
【问题描述】:
我开始使用 CSS 变量来尝试制作模块化尺寸比例。但我很快就遇到了忽略 CSS 值的问题,但我没有看到任何关于错误的迹象。
让我们看看问题的最小再现:
:root {
--ratio: 1.25;
--font-size-medium-heading: calc(var(--ratio) * 1rem);
--font-size-large-heading: calc(var(--font-medium-heading) * var(--ratio)); /* note the typo in the var */
}
h1 {
font-size: var(--font-size-large-heading);
}
我故意打错字看看会发生什么(我在变量名中省略了-size)。由于我的标题变小了,我尝试查询我的新 CSS 变量的值:
getComputedStyle(document.documentElement).getPropertyValue('--font-size-large-heading') === ''
它返回一个空字符串。
让我们前往 Chrome 的样式检查器,看看我是否收到警告标志⚠️:
MDN 建议使用 CSS 验证器。所以让我们试试这个:https://jigsaw.w3.org/css-validator/validator
我的猜测是这个验证器并不是最新的(如果有人还在使用它的话)。
更新
我知道根据规范它是一个有效的语句,但它的计算时间值是无效的。我想知道这些,因为它只是将真正的问题隐藏在一个非常常见的错误中(如果你曾经花了一天时间发现 Angular 在模板中期望 "'thing'" 而不是 "thing",你就会明白如何bad 没有关于无效值的输出)。
有没有办法获得关于计算时间无效 CSS vars 和 calc 值的错误输出?
【问题讨论】:
-
您的代码没有任何问题,一切都有效。您正在使用一个名为
--font-medium-heading的变量,即使您没有定义它也是有效的。您将仅在计算时间获得无效值,或者您稍后将在代码中定义它 -
@TemaniAfif 请参阅下面我对 Zohir Salak 回答的评论;我不介意它是否有效,我介意我找不到任何东西告诉我一个值被忽略了。这是十亿美元的错误。
-
但它的计算时间值无效。 --> 你没有计算值,因为你还没有使用变量
标签: css error-handling css-variables css-calc