CSS и HTML фичи в Baseline 2025


В прошлом году (+ в январе 2026) довольно много платформенных фич достигли статуса Baseline Widely Available — это значит, что они поддерживаются во всех основных браузерах уже 30 месяцев! А это повод бескомпромиссно тащить их в прод проверить аналитику по пользовательским устройствам и браузерам в вашем проекте (скорее всего ваши пользователи уже обзавелись браузером, которые эти фичи поддерживают).

Собрал списком все фичи с кратким описанием и моими комментами к их использованию.

CSS

Container Queries — применение стилей на основе размеров родительского контейнера, а не viewport. Позволяет создавать адаптивные компоненты, которые реагируют на свой контейнер.

.card {
container-type: inline-size;
}
@container (min-width: 300px) {
.card { background-color: lightblue; }
}

Мнение: 5 из 5, но требует перестроить майндсет в целом при работе с UI (то есть не только вам как разработчику, но ещё из дизайнеру). Хорошо ложится на UI-киты и разработку изолированных компонентов.

Individual Transform Properties — отдельные свойства translate, scale, rotate вместо одного transform. Упрощает анимации и улучшает читаемость кода.

.element {
translate: 20px 10px;
scale: 0.8;
rotate: 90deg;
}

Мнение: 3 из 5, приятный сахар, помогает сократить повторящийся код при написании трансформов, легко внедрить.

Motion Path — анимация элементов вдоль заданного пути с помощью offset-path.

.element {
offset-path: path('M10 10 L 100 100');
animation: move 2s linear infinite;
}

Мнение: 2 из 5, специфичная, но прикольная фича, но если появится подходящая задача и вовремя вспомнить, можно избежать использования JS для анимации движения элемента по траектории.

Grid Animation — анимация свойств grid-template-columns и grid-template-rows.

.grid {
display: grid;
grid-template-columns: 1fr 1fr;
transition: grid-template-columns 0.3s;
}
.grid:hover {
grid-template-columns: 1fr 2fr;
}

Мнение: 2 из 5, в целом прикольная фича для разъезжающихся динамических лейаутов, но применимость нечастая.

animation-composition — выбор способа комбинирования анимаций, влияющих на одно свойство.

.element {
animation-composition: add; /* replace, add, accumulate */
}

Мнение: 2 из 5, если делаете руками CSS-анимации, может пригодиться, иначе не будет полезно.

color-mix() — смешивание двух цветов в заданном цветовом пространстве. Полезно для создания светлых/тёмных оттенков.

.element {
background: color-mix(in srgb, red 50%, white 50%);
}

Мнение: 4 из 5, чрезвычайно мощная штука, если настраиваете собственную дизайн-систему, стайлгайд или UI-кит в проекте.

color() — выбор цвета из указанного цветового пространства. Поддерживает wide-gamut пространства вроде display-p3 для более насыщенных цветов.

.element {
color: color(display-p3 0.5 0.2 0.8);
}

Мнение: 4 из 5, аналогично мнению про color-mix()

Lab и LCH — цветовые пространства с перцептивной равномерностью. Lab использует прямоугольные координаты, LCH — полярные.

Oklab и OkLCh — цветовые пространства, разработанные для лучшего соответствия человеческому восприятию цвета. OkLCh — полярный вариант Oklab.

.element {
color: lab(50% 20 -30);
background: lch(60% 50 150);
color: oklab(0.5 0.2 -0.1);
background: oklch(0.6 0.5 120);
}

Мнение: 4 из 5, формат oklch может также пригодиться для гибкой настройки цветовой палитры и её производных в проекте.

Small, Large, Dynamic Viewport Units — единицы dvh, svh, lvh для учёта UI мобильных браузеров. sv* — минимальный размер, lv* — максимальный, dv* — динамический.

.element {
height: 100svh; /* 100% минимального viewport height */
width: 100dvw; /* 100% динамического viewport width */
}

Мнение: 4 из 5, если вы когда-нибудь боролись с fullscreen-высотой в вёрстке на мобилках, то в следующий раз присмотритесь к этим значениям, могут пригодиться.

Two-value display property — свойство display теперь принимает два значения для явного указания внешнего и внутреннего режима layouts. Например, inline flex или block flow.

.card {
display: inline flex;
}
.container {
display: block flow;
}

Мнение: 2 из 5, любопытно, но не более.

overflow: clip — обрезка содержимого без создания скроллов, с возможностью обрезки только по одной стороне

.nav-bar {
overflow-x: clip;
overflow-y: visible;
}

Мнение: 4 из 5, полезно, если нужно включить скролл по одно стороне + также это значение overflow, в котром не создаётся новый formatting context.

overscroll-behavior — управление поведением при прокрутке за границы.

.container {
overscroll-behavior: contain;
}

Мнение: 4 из 5, очень узкоспециализированная фича, но может быть крайне полезна для управлением мульти-скроллом.

outline — свойства для стилизации линии вокруг элемента вне border, не влияющие на layout.

.element {
outline: 2px dashed red;
outline-offset: 5px;
}

Мнение: 3 из 5, фича-то старая, но был баг в Safari, который починили в 03.2023.

:nth-child() of <selector> — более точный выбор элементов с фильтром по селектору.

li:nth-child(odd of .active) {
background: yellow;
}

Мнение: 4 из 5, прикольная штука для условной стилизации, полезно помнить перед реализацией на JS.

Media Query Range Syntax — новый синтаксис для медиа-запросов с диапазонами.

@media (400px <= width <= 800px) {
/* стили */
}

Мнение: 4 из 5, синтаксический сахар, нравится, что наконец не нужно каждый раз вспоминать и перебирать варианты min/max-width.

Resolution Media Query — медиа-запрос для применения стилей на основе плотности пикселей устройства.

@media (min-resolution: 2dppx) {
/* стили для high-DPI экранов */
}

Мнение: 2 из 5, узкоспециализированная фича, но может пригодиться для детальной стилизации для разных мобильных устройств.

Trigonometric Functionssin(), cos(), tan() в CSS для математических вычислений.

.element {
transform: rotate(calc(sin(45deg) * 1turn));
}

Мнение: 2 из 5, любопытно, но слишком хардкорно, малоприменимо в реальной жизни.

calc() Keywords — математические константы e, pi, infinity, NaN в CSS math функциях.

.element {
font-size: calc(var(--base-size) * pi);
height: calc(100vh * sin(pi / 2));
}

Мнение: 1 из 5, не могу придумать, где это применить.

font-palette — выбор цветовой палитры из шрифта, с возможностью переопределения отдельных цветов через @font-palette-values.

.element {
font-palette: alternate;
}

Мнение: 1 из 5, малополезная фича, применимая только для “цветных” шрифтов, не стоит внимания

Style Containment и Inline-size Containment — изоляция стилей элемента. style ограничивает расчёт счётчиков и кавычек внутри элемента, а inline-size предотвращает установку inline-размеров элемента его содержимым, ускоряя рендеринг.

.widget {
contain: style;
}
.container {
contain: inline-size;
}

Мнение: 1 из 5, мелкие малополезные фичи, style может пригодиться разве что в нестандартных нумерованных списках; inline-size, могу только в теории представить, что может быть полезно в разного рода wysiwyg-ах.

HTML / DOM

inert — атрибут для отключения элементов от взаимодействия и accessibility tree. Элементы не получают фокус и не реагируют на клики.

<div inert>
<button>Неактивная кнопка</button>
</div>

Мнение: 3 из 5, мощная и простая фича, хороший юзкейс для ограничения пределов фокуса при показе модальных окон: модалка работает, body под ней за inert-ом.