Анимации на основе прокрутки без JavaScript

Анимация, которая проигрывается не по времени, а по мере прокрутки страницы — прогресс-бар чтения статьи, параллакс-эффект, постепенное появление элементов при скролле — долгое время требовала JavaScript для отслеживания положения прокрутки на каждом кадре.

Новые возможности CSS позволяют связать анимацию непосредственно с прокруткой без единой строчки скрипта — таймлайн анимации привязывается не к обычному времени в секундах, а к прогрессу прокрутки страницы или конкретного контейнера, и анимация проигрывается синхронно с движением скролла.

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

Главное преимущество перед JavaScript-реализацией — производительность. Браузер обрабатывает такую анимацию на уровне рендеринга, без постоянного выполнения обработчика события прокрутки на JavaScript, который при частом срабатывании способен заметно нагружать процессор, особенно на слабых устройствах.

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

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

Подробнее о новых возможностях анимации, привязанной к прокрутке, рассказано в статье про scroll-driven анимации в документации Chrome.

Поделиться в социальных сетях

Отправить комментарий

0 Комментарии

Отправить комментарий (0)

#buttons=(Хорошо) #days=(20)

Мы используем файлы cookie для улучшения работы сайта. Подробнее
Хорошо
×