Анимация прокрутки в 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).
  • Креативные эффекты: фоны, изображения или градиенты, которые меняются при прокрутке.

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

Битые картинки vs CSS

Февраль 6, 2021 г.

Перефразируя устойчивое выражение: broken image happens. И раз уж они все равно могут появиться на вашем сайте, то с ними нужно что то делать, т.е. как ...

Читать

Как запретить растягивание textarea

Февраль 27, 2017 г.

Тэг TextArea - незаменимое поле ввода для текста. Современные браузеры по-умолчанию позволяют пользователям изменять размеры, растягивать его за правый ...

Читать

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

Май 2, 2025 г.

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

Читать

Переносы элементов сетки bootstrap разной высоты (фикс для версии 3.x)

Май 2, 2021 г.

В третей версии бутстрапа используется выравнивание элементов сетки col-* с помощью свойства float: left;. Пока элементы в сетке имеют одинаковую высоту, ...

Читать
 

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

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



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