Алёна Батицкая — Tbilisi JS, 28 декабря 2025
if()?
Алёна Батицкая
if()?Это CSS-функция, позволяющая задать свойству значение (или его часть) в зависимости от условий.
MDN
Chrome 137+
.block {flex-direction: if(media(width < 700px): column;else: row;)}
if()if() как значение свойства;else — по желаниюbackground-image: if(); /* пустое значение */background-color: if(else: yellow);
Можно вкладывать if в if!
style()Значение в зависимости от кастомной переменной (похоже на @container style())
color: if(style(--theme: dark): white;style(--theme: pink): gray;else: black;)
style() — ограниченияstyle(--angle < 45) — ❌ не работаетmedia()Всё как в @media, только для одного свойства
media(min-width: 700px): white;/* 🤝 */media(width >= 700px): white;
media() — примерыdoka.guide/css/media/color: if(media(print): black);opacity: if(media(hover: hover): 0.8);transition: if(media(prefers-reduced-motion): none);
supports()Проверка поддержки CSS-фичи браузером
display: if(supports(display: grid-lanes): grid-lanes;else: grid;)
/* ✅ Можно внутри одного типа */style((--theme: dark) and (--user: admin)): red;/* ❌ Нельзя разные типы */media(width < 700) and style(--user: admin): red;
if() как часть значенияborder: 3px solid if(media(width > 700px): red;else: green;);
if() в borderСработает первое правило, вернувшее true
Не стоящее последним, как в каскаде!
Каскад — это база 💪
Нижестоящее правило перебьёт if()
if() вычисляется в значение, веса не добавляет
if().element {color: black; /* фоллбэк */color: if(style(--theme: dark): navy;else: snow;);}
if() + другие функцииwidth: calc(if(style(--mode: compact): 50%;else: 80%;) - 2em);
Главное не запутаться в скобках =)
if()?«У нас же уже есть @media, @container...»
Все условия в одном месте!
:root {--bg: if(style(--theme: dark): #0d1117;style(--theme: pink): #fdf2f8;else: #ffffff; /* light */);}
if()От фиксированных → к вычисляемым значениям
calc()clamp()minmax()color()currentColorfit-contentCSS становится более декларативным
Мухи отдельно, котлеты отдельно 🍔
Отслеживает юзкейсы, где разработчики используют JS для стилей
И переносит эту логику в CSS 🎯
С наступающим Новым Годом!