Новая эра в CSS: зачем нужен if?
CSS долгое время оставался языком без логики. Однако в 2025 году ситуация начала меняться: появилась функция if()
, позволяющая применять стили в зависимости от условий — без JavaScript и препроцессоров. Это открывает дорогу к более декларативному, чистому и адаптивному коду.
Рабочий синтаксис условия в CSS
.box {
width: 300px;
height: 300px;
background-color: #red;
}
@media (width <= 1000px) {
.box {
background-color: blue;
}
}
@media (width <= 600px) {
.box {
background-color: green;
}
}
Синтаксис функции if
.box {
width: 300px;
height: 300px;
background-color: if(
media(width <= 600): green;
media(width <= 1000): blue;
else: red;
);
}
Синтаксис функции if c переменными
property: if(
style(--var: value1): result1;
style(--var: value2): result2;
else: fallback
);
Каждое условие проверяет соответствие переменной конкретному значению. Если ни одно не срабатывает — используется else
.
Пример: адаптивная кнопка по теме
<button class="btn" data-theme="dark">Отправить</button>
.btn {
--theme: attr(data-theme);
background: if(
style(--theme: dark): #111;
style(--theme: light): #eee;
else: gray
);
}
Стили адаптируются в зависимости от значения атрибута, и не требуют JS-кода.
Преимущества if в CSS
- Нативная условная логика — без классов и скриптов
- Темизация и UI-состояния через CSS-переменные
- Чистый код — вся логика в одном месте
- Меньше дублирования — компактные правила
- Совместимость с attr() — автоматические стили от HTML-атрибутов
Ограничения и подводные камни
- Поддерживается только в Chrome 137+ (на июнь 2025)
- Нет поддержки числовых сравнений, логических операторов
- style() работает только с текстовыми значениями
- Safari, Firefox и iOS-браузеры игнорируют функцию
- Сложности с отладкой — ошибки не видны в DevTools
- Пока не подходит для массового продакшна без фолбэков
Как использовать безопасно
Лучшее решение — комбинировать if()
с базовыми значениями. Например:
.card {
border-color: gray; /* fallback */
border-color: if(
style(--priority: high): red;
else: gray
);
}
Так стиль сработает в поддерживаемом браузере, а в других — останется безопасное дефолтное оформление.
Делаем выводы
Функция if в CSS — это прорыв, но пока ещё экспериментальный. Она упрощает код, делает его декларативным и динамическим. Однако для полноценного внедрения нужно дождаться поддержки в Safari и Firefox. Сейчас мы рекомендуем использовать её с фолбэками в новых проектах и внимательно следить за развитием спецификации.