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

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

Использование CSS градиента цвета для текста

Февраль 28, 2022 г.

Хорошо известна функция linear-gradient, используемая для background. Нельзя ли её применить для оформления текста? Как оказывается, такая возможность ...

Читать

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

Март 12, 2019 г.

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

Читать

Центровка HTML с помощью абсолютного позиционирования

Октябрь 10, 2017 г.

Классическая задача о позиционировании контейнера относительно центра родительского блока. Я писал уже о некоторых простых способах установить контейнер ...

Читать

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

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

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

Читать
 

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

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



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