Анимация прокрутки в CSS: animation-timeline: scroll()

Ещё недавно для прогресс-бара чтения на сайте приходилось подключать JavaScript: отслеживать событие scroll, вычислять процент прокрутки и менять ширину элемента. Теперь это можно сделать чисто на CSS, благодаря новой возможности — Scroll-driven animations.

Рассмотрим стили:

Как это работает

  • animation-timeline: scroll(); — указывает, что анимация будет синхронизирована с прокруткой страницы, а не с течением времени.
  • @keyframes fill-keyframes описывает изменение свойства (здесь — ширины).
  • При скролле страницы полоса «наполняется» пропорционально тому, сколько контента пользователь пролистал.

То есть ширина элемента теперь зависит не от секунд, а от положения скролла.

Поддержка браузеров

Понятно, что фича новая, и потому возникает вопрос, а кто из браузеров это поддерживает?

На данный момент фича поддерживается в Chrome 115+, Edge 115+ и частично в Safari Technology Preview. Firefox пока находится на этапе внедрения.
Для продакшн-решений имеет смысл предусмотреть fallback (например, оставить JS-реализацию для неподдерживаемых браузеров).

Где можно использовать

  • Прогресс-бар чтения статьи.
  • Анимированное появление блоков при скролле (без IntersectionObserver).
  • Креативные эффекты: фоны, изображения или градиенты, которые меняются при прокрутке.

Мало букафф? Читайте есчо !

Анимация нажатия: эффект нажатой кнопки

Май 2, 2025 г.

Когда пользователь нажимает кнопку, полезно дать тактильную обратную связь — например, слегка "прижать" её визуально. Такой эффект достигается с помощью изменения масштаба (scale) и вертикального смещения (translateY). Это статья из цикла заметок по ...

Читать

Скрыть/изменить стили выделения в HTML - псевдокласс css::selection

Март 12, 2019 г.

Для удобства пользователя, браузеры применяют специальные стили к выделенному тексту. Данные стили могут нарушать дизайн, смотреться не гармонично в верстке, и потому нужно иметь возможность изменить или убрать данный эффект. В моих проектах я ...

Читать

Эффект размытия blur средствами CSS

Декабрь 23, 2015 г.

В интернете много решений, я попробовал, наверное, все :) Основная проблема - не удаётся достичь кросс-браузерности. Как всегда, отличился IE. Для ...

Читать

Как сделать чтобы scss mixin добавлял стили однократно

Март 29, 2025 г.

Иногда требуется, чтобы стили или часть стилей, формируемых миксином, добавлялись однократно. Например, ваш миксин добавляет анимацию и при этом объявляет блок @keyframes, который не зависит от параметров и для всех анимированных блоков одинаков. ...

Читать
 

Комментарии к «Анимация прокрутки в CSS: animation-timeline: scroll()»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: