Я начал работать с 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);
}
I специально сделал опечатку, чтобы увидеть, что произойдет (я пропустил -size
из имени переменной). Поскольку мой заголовок стал мини, я попытался запросить значение моей новой переменной CSS:
getComputedStyle(document.documentElement).getPropertyValue('--font-size-large-heading') === ''
Она вернула пустую строку.
Давайте перейдем к Chrome инспектор стиля и посмотреть, получу ли я предупреждающий знак ⚠️: ![font-size-large-heading shows up as a valid property, no warning sign](https://i.stack.imgur.com/ghURC.png)
MDN советует использовать CSS валидатор. Итак, давайте попробуем это: https://jigsaw.w3.org/css-validator/validator ![Well it really was not updated recently](https://i.stack.imgur.com/jqKS7.png)
Я предполагаю, что этот валидатор не очень актуален (если кто-то использует его до сих пор ).
Обновление Я понял, что согласно спецификации c это допустимое утверждение , но значение его вычисленного времени недопустимо. Я хочу знать об этом, поскольку он просто скрывает истинную проблему в очень частой ошибке (если вы когда-нибудь потратили день на то, чтобы узнать, что Angular ожидал "'thing'"
вместо "thing"
в шаблоне, вы будете понять, как плохо не выводить недопустимые значения).
Есть ли способ получить сообщение об ошибке о недействительных значениях CSS var
s и calc
вычисленного времени?