Chrome добавил поддержку if() функций в CSS

#css
#web

Chrome 137 post preview

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 и выше. Остальные пока не торопятся. Лагерь лисички здесь, яблочники вам сюда