Мой вопрос в том, почему переменные 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);
или любые другие множественные значения.
Также нет поддержки таких ключевых слов, как наследование, currentColor, initial и т. Д. Поэтому я не уверен, как я могу полагаться на наследование, поскольку очевидно Мне нужно быть очень точным с данными значениями. Протестировано в Firefox 57.0.1 и Chrome 63.
Я знаю, что CSS-переменные все еще как Working Draft, так что, возможно, именно поэтому текущее поведение.