Как анимировать CSS Grids без JavaScript
- 1 июня 2025
Grid Layout — одна из самых зрелых технологий в CSS. Он давно решает задачи макета гораздо лучше, чем float
, flex
и position
. Но долгое время у него была одна неочевидная граница: анимация размеров сетки.
Да, grid-template-columns
и grid-template-rows
существовали с самого начала появления гридов. Да, они были мощными. Но плавно менять их было нельзя — браузеры просто прыгали между состояниями. Анимация сетки оставалась мечтой.
Ситуация изменилась c 27 апреля 2025 года. Анимация grid-template-columns
и grid-template-rows
вошла в baseline — это означает, что теперь она официально поддерживается всеми современными браузерами. Без флагов. Без хака с display: contents
. Просто работает.
Что это значит на практике
Давайте посмотрим на несколько примеров.
Это работает во всех браузерах, без оговорок. Главное условие: вы анимируете числовые значения. fr
, px
, %
— подойдут. auto
, min-content
— нет.
Интерактивные карточки и превью
Часто нужно, чтобы при наведении одна карточка становилась больше других — например, в слайдере, галерее или гриде товаров. Раньше это делалось через transform: scale
, и визуально всё вроде бы работало. Но если внутри карточки текст, кнопки, адаптивные блоки — масштаб всё портит: шрифты становятся размытыми, кнопки съезжают, верстка ломается. Анимированный Grid позволяет менять размер ячеек по-честному, без потерь в типографике и структуре. Элемент не масштабируется — он реально растёт в сетке, как положено.
Анимированная боковая панель
Классическая задача: при клике на кнопку левый сайдбар расширяется, а контентная часть сдвигается. Раньше — только width, либо через position: absolute и вручную пересчитанные отступы. Теперь можно задать grid-template-columns: 60px 1fr, а при раскрытии — 240px 1fr. Переход будет плавным, всё останется выровнено по сетке, и при этом не нужно пересобирать layout вручную. Особенно полезно, если внутри сайдбара — меню, аватар, фильтры: всё «раскроется» естественно.
Таблицы, гриды и редакторы
Когда пользователь, например, наводит на столбец таблицы или выбирает ячейку, хочется подсветить или выделить эту часть. Можно просто поменять фон — но гораздо выразительнее слегка увеличить колонку в ширину. Это делает интерфейс «живым», без резких скачков. А для визуальных редакторов, планировщиков, интерфейсов настройки — Grid с анимацией позволяет строить структуру, где всё двигается как в Figma, но средствами чистого CSS.
Почему это важно
Раньше, чтобы создать эффект изменения ширины колонок, приходилось изобретать обходные пути: либо использовать transform: scale
, либо пересчитывать width
через JavaScript, либо подменять layout на Flex и работать с flex-grow
. Выглядело это не очень:
Все эти способы создавали визуальную иллюзию, но не меняли реальную структуру макета. Например, если вы меняете размер элемента, его потом трудно выровнять по сетке, определить реальную ширину, он может «вылезать» за пределы контейнера. Грид решает это честно: вы меняете именно шаблон сетки, а браузер всё перерасчитывает с учётом реального контекста.
То, чего не хватало всё это время — это плавности. Мы давно привыкли к transition
на opacity
, transform
, color
, но когда речь шла о макете — всё было либо резко, либо через JS. Теперь вы можете спокойно поменять компоновку интерфейса, и пользователь увидит, как сетка перестраивается на глазах, без рывков. Это особенно важно для интерактивных компонентов: карточек, панелей, модулей, где есть ощущение вложенности и масштаба. Всё движется естественно — и именно макет, а не просто декорации.
Кроме того, это упрощает архитектуру. Больше не нужно оборачивать каждый элемент в отдельный блок с overflow: hidden
, придумывать псевдоэлементы, чтобы имитировать переход между колонками. Grid делает это сам. Это означает меньше кода, меньше зависимостей, меньше нестабильных решений, и, самое главное — меньше скрытой логики. Вы описываете, какой должен быть макет в каждом состоянии, а CSS сам заботится о переходе между ними.
Наконец, это меняет отношение к самому CSS. Grid анимации делают возможным векторный интерфейс — когда структура интерфейса не зафиксирована, а может гибко и плавно меняться, реагируя на взаимодействие пользователя. При этом это не скрипт, не canvas, не WebGL. Это просто CSS. В двух состояниях. И вы сразу видите, что произойдёт: ни сюрпризов, ни фреймворков, ни «магии».
Grid был задуман как инструмент для разметки. Теперь он стал и выразительным инструментом для динамической разметки. Всё, что раньше делали через JS и 12 вложенных div’ов, теперь можно сделать в три строки CSS — красиво, надёжно, понятно.
И главное — стабильно. 2025-й год стал точкой, когда CSS Grid Animation больше не эксперимент. Это стандарт.
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.
Читать дальше

CSS-селекторы. Шпаргалка для новичков
Селекторы — это шаблоны, которые используются для привязки стилевых свойств к элементам в документе. Вы можете задать стиль для всех элементов или сократить выбор с помощью определённого селектора.
- 8 августа 2025

Всё самое важное о псевдоклассе :default
Псевдокласс :default
— это способ стилизации элемента формы, выбранного по умолчанию. Он особенно полезен при работе с группами радиокнопок, чекбоксов или выпадающих списков, где важно визуально выделить стартовый (предустановленный) вариант. Такой подход делает интерфейс понятнее и помогает пользователю быстрее ориентироваться в выборе.
Доступно в Baseline в статусе «Widely Available» с 2022-07-15
- 4 августа 2025

Как работает единица измерения em в CSS
Единица em
используется в CSS для задания относительных размеров, которые зависят от шрифта родительского или текущего элемента. Это делает верстку гибкой и адаптивной: если пользователь увеличит базовый размер текста, элементы тоже изменятся.
Доступно в Baseline в статусе «Widely Available» с 2018-01-29
- 30 июля 2025

Как найти пустые элементы в CSS
Псевдокласс :empty
помогает находить пустые HTML-элементы, чтобы применять к ним стили или скрывать их. Это удобно для автоматической очистки интерфейса и улучшения UX без дополнительных классов или JavaScript.
- 29 июля 2025

Как работает ::first-line — оформление первой строки текста в CSS
Псевдоэлемент ::first-line
позволяет задать особое оформление только для первой строки текста внутри элемента. Это полезно, когда нужно визуально выделить начало абзаца — например, сделать первую строку жирной, изменить цвет или стиль шрифта. Такой приём часто используют в типографике и веб-дизайне, чтобы направить внимание читателя.
Этот псевдоэлемент находится в Baseline в статусе «Widely Available» с 2018-01-29
Как использовать: first-line
🚀 Сегодня вам бесплатно доступен тренажёр по HTML и CSS.
Псевдоэлемент добавляется к селектору через ::
, и внутри блока задаются стили, которые применятся только к первой строке, как она отображается в браузере:
p::first-line {
font-weight: bold;
color: red;
}
Этот стиль сделает только первую строку текста в каждом абзаце <p>
красной и жирной. Важно: то, где заканчивается строка, зависит от ширины контейнера и размера шрифта, а не от переносов в HTML.
Какие свойства работают
Псевдоэлемент ::first-line
не поддерживает любые стили. Он ограничен только теми, что могут визуально применяться к строке текста:
Поддерживаются:
color
font
и его производные (font-size
,font-weight
,font-style
,font-variant
)letter-spacing
,word-spacing
line-height
text-decoration
text-transform
vertical-align
background
margin-left
иmargin-right
padding-left
иpadding-right
border-left
иborder-right
Не поддерживаются:
display
,position
,transform
,width
,height
и другие «структурные» свойства.
Это сделано, чтобы не нарушать верстку и избежать проблем с потоком документа.
Пример с цитатой
<blockquote>
Когда вы начнёте, главное — не останавливаться.
</blockquote>
blockquote::first-line {
text-transform: uppercase;
letter-spacing: 2px;
}
Здесь первая строка цитаты будет написана ПРОПИСНЫМИ буквами с увеличенным расстоянием между символами. Это создаёт акцент и улучшает читаемость начала мысли.
Советы по использованию
- Используйте
::first-line
для декоративных акцентов: начало статьи, цитаты, описание карточки. - Старайтесь не задавать свойства, которые не поддерживаются — они просто игнорируются.
- Не используйте псевдоэлемент для логических операций — он только визуальный.
- Не забывайте про адаптивность: на разных экранах «первая строка» может меняться.
Поддержка
Псевдоэлемент ::first-line
поддерживается во всех современных браузерах, включая Chrome, Firefox, Safari, Edge. Работает на блоковых и строчно-блочных элементах (display: block
, inline-block
, inline
).
Заключение
::first-line
— это простой и эффективный инструмент, который помогает сделать текст живым и выразительным. Он особенно полезен для визуального оформления абзацев, заголовков, описаний, не вмешиваясь в HTML-структуру. Даже пара свойств может кардинально изменить восприятие контента.
Больше обзоров веб-функций — в телеграм-канале HTML Academy.
Нашли ошибку или опечатку? Напишите нам.
- 27 июля 2025

CSS-счётчики: как работает свойство counter-set
counter-set
— это новое CSS-свойство, с помощью которого можно явно установить значение счётчика в нужный момент. Оно похоже на counter-reset
, но отличается тем, что не сбрасывает счётчик, а просто присваивает ему конкретное значение. Это даёт больше контроля над нумерацией, особенно когда нужно продолжить счёт или задать его вручную в разных частях документа.
CSS-счётчики — это способ автоматически нумеровать элементы, например заголовки, пункты списка, шаги в инструкции. Их можно комбинировать с псевдоэлементами и свойством content
, чтобы вставлять числа прямо в текст.
- 25 июля 2025

Как работает :not() в CSS — исключаем элементы из стилей правильно
Доступно в Baseline в статусе «Widely Available» с 2023-07-21
Псевдокласс :not()
позволяет задать стили для всех элементов, кроме тех, что соответствуют определённому селектору. Это мощный инструмент, который делает CSS гибче, чище и избавляет от необходимости писать сложные конструкции или добавлять лишние классы в HTML.
- 20 июля 2025

Выбор цветов в CSS через hsl() и hsla()
CSS-функции hsl()
и hsla()
позволяют задавать цвета на основе восприятия человеком, а не машинной модели RGB. Это делает работу с цветами более гибкой и наглядной, особенно при создании адаптивных интерфейсов, тёмных тем или анимаций.
- 18 июля 2025

Как перекрыть один элемент другим. CSS-свойство z-index
Свойство z-index
в CSS отвечает за порядок наложения элементов на веб-странице. Оно определяет, какой элемент окажется сверху, а какой — будет скрыт под ним. Чем выше значение z-index
, тем ближе к пользователю расположен элемент.
- 16 июля 2025

Единица измерения cap в CSS
С 11 декабря 2023 года (Baseline: Newly Available) в CSS появилась новая единица измерения — cap
. Она измеряет высоту заглавной латинской буквы в шрифте, установленном для элемента. Это значит, что теперь можно задавать размеры, отступы и позиционирование элементов не только в пикселях, em
или rem
, но и относительно визуальной высоты заглавных букв.
Эта единица особенно полезна при работе с крупными заголовками, адаптивной типографикой и точным выравниванием текста.
- 8 июля 2025