Chrome добавил поддержку if()
функций в CSS
Photo Credits: Chrome For Developers
Функция if()
это часть спецификации CSS и описана в разделе the if() notation. Это часть стандарта, но она в драфте, Chrome первый добавил поддержку этой функции.
Синтаксис
Функция if()
обеспечивает лаконичный способ выражения условных значений. Она принимает ряд пар условие-значение, разделенных точкой с запятой.
Функция последовательно оценивает каждое условие и возвращает значение, связанное с первым истинным условием. Если ни одно из условий не оценивается как истинное, функция возвращает пустой поток токенов.
Синтаксис:
selector {
color: if(
style(<condition>): <value>;
style(<another-condition>): <value>;
else: <value>;
);
}
Пример:
div {
color: var(--color);
background-color: if(
style(--color: white): black;
else: white
);
}
.dark {
--color: black;
}
.light {
--color: white;
}
Это круто?
Да, пока мы ждем паттерн матчинг в JavaScript, его добавили в CSS
И всё же, почему это круто? if()
в CSS это выражение, а значит, он возвращает результат своего внутреннего выражения при вызове. В отличие от if оператора в JavaScript, где if()
- это управляющая конструкция, а не выражение, т.е он ближе к тернарному оператору, чем к классическому if()
Поддержа браузерами
На момент написание поста, функция if()
поддерживается в Chrome версии 137 и выше. Остальные пока не торопятся. Лагерь лисички здесь, яблочники вам сюда