CSS продолжает удивлять: теперь можно делать всплывающие окна, анимации и адаптивные формы без строчки JavaScript. Ниже — подборка самых крутых CSS-фич 2025 года, которые стоит взять на вооружение.
Теперь можно создавать модальные окна, подсказки и выпадающие списки только с помощью HTML и CSS!
<!-- Кнопка-триггер -->
<button popovertarget="myPopover">Подписаться</button>
<!-- Всплывающее окно -->
<div id="myPopover" popover>
Спасибо за подписку! ❤️
</div>
При клике на кнопку появляется попап. Закрыть можно нажатием Escape или кликом вне окна.
Чтобы добавить плавную анимацию:
#myPopover {
transform: translateY(-2rem);
opacity: 0;
transition: transform 0.3s ease, opacity 0.3s ease;
}
#myPopover:open {
transform: translateY(0);
opacity: 1;
}
Обычно, когда элемент появляется, CSS сразу применяет конечный стиль. Анимация получается резкой. Новый @starting-style
позволяет задать начальное состояние, которое потом плавно перейдёт в итоговое.
#myPopover {
transition: transform 0.3s ease, opacity 0.3s ease;
}
#myPopover:open {
transform: translateY(0);
opacity: 1;
}
@starting-style {
#myPopover:open {
transform: translateY(-2rem);
opacity: 0;
}
}
📌 Элемент стартует чуть выше и становится прозрачным, затем плавно двигается вниз и появляется.
CSS теперь умеет плавно анимировать переход между height: 0
и height: auto
, а также min-content
, max-content
, fit-content
.
Для этого нужно разрешить использование ключевых слов:
:root {
interpolate-size: allow-keywords;
}
Пример:
<details>
<summary>Показать</summary>
<div class="content">Скрытое содержимое.</div>
</details>
.content {
overflow: hidden;
height: 0;
transition: height 0.5s ease;
}
details[open] .content {
height: auto;
}
Раньше такой анимации не было вообще. Теперь — плавное раскрытие.
Наконец-то CSS научился автоматически подгонять размер input, textarea и select под содержимое. Просто добавьте:
input, textarea, select {
field-sizing: content;
max-width: 100%; /* ограничение по ширине */
}
Пример:
<textarea placeholder="Пиши сколько хочешь..."></textarea>
<input type="text" placeholder="Имя">
<select>
<option>Коротко</option>
<option>Очень длинный вариант</option>
</select>
Такая форма смотрится аккуратно и подстраивается под пользователя без JS. 💡
Больше не нужно городить @media (prefers-color-scheme)
— теперь всё можно сделать в одну строку с функцией light-dark()
:
:root {
color-scheme: light dark;
--text-color: light-dark(#000000, #ffffff);
--bg-color: light-dark(#ffffff, #000000);
}
💡 Цвета автоматически подстроятся под системную тему пользователя.
CSS 2025 показывает, что с каждым годом мы можем делать больше и красивее без единой строчки JavaScript. Пробуйте новые фичи, и ваш код станет не только проще, но и современнее ✨
Не нашли нужной статьи?
Напишите нам и ее сделаем!