Фронтенд разработчики часто сталкиваются с тем, что клиенты просят реализовать на сайте какие-то потрясающие эффекты — анимацию при прокрутке страницы. Да, конечно, можно такие эффекты создать на CSS самостоятельно, потратив несколько часов на попытки сделать достойную анимацию. Но для этих целей уже создано множество готовых библиотек. И одна из лучших — это Animate On Scroll или AOS js
Быстрая навигация
В этой статье вы узнаете о том, как установить эту библиотеку и заставить ее работать. К концу урока создание анимации при скролле станет для вас плёвым делом.
1Установка AOS.js
На выбор есть несколько вариантов установки. Можно скачать, использовать CDN или установить библиотеку через YARN, NPM либо BOWER
Подключаем с помощью CDN
CDN (Content Delivery Networks) подразумевает, что что вам не нужно скачивать библиотеку, она хранится на удаленных серверах. Все что нужно сделать — это подключить ее CSS и JS файлы к себе на станицу.
HTML
<link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet">
...
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
Установка с помощью YARN, NPM, BOWER
YARN
yarn add aos
NPM
npm install aos --save
BOWER
bower install aos --save
Вот и все, больше ничего делать не нужно. Производительность нашего сайта особо не пострадала.
Чтобы инициализировать AOS достаточно написать в HTML или лучше в отдельном JavaScript файле следующую строчку:
HTML
<script>
AOS.init();
</script>
2Анимация элементов при скролле с AOS
После инициализации библиотеки нам нужно добавить к элементам, которые мы собираемся анимировать при прокрутке, некоторые атрибуты.
Для базовой анимации впишите в ваш HTML элемент атрибут data-aos="название_анимации"
Разработчики Animate On Scroll создали много типов анимации, которые вы можете выбрать для своего блока. К примеру, при появлении/исчезновении элемента можно добавить анимации: "fade", "fade-up" или "fade-down-left". Или же добавить анимацию флипа и слайда "flip-up", "flip-left", "slide-down" и "slide-right".
Посмотрите пример разметки:
HTML
<div class="aos aos--first" data-aos="fade-right">
<span>data-aos="fade-right"</span>
</div>
<div class="aos aos--second" data-aos="fade-down">
<span>data-aos="fade-down"</span>
</div>
<div class="aos aos--third" data-aos="fade-left">
<span>data-aos="fade-left"</span>
</div>
Уже выходит неплохо, а ведь кроме строки инициализации нам не пришлось написать ни строчки js кода. Рассмотрим все базовые возможности AOS.js:
Fade эффекты
HTML
<div data-aos="fade-down">
...
</div>
HTML
<div data-aos="fade-up">
...
</div>
HTML
<div data-aos="fade-right">
...
</div>
HTML
<div data-aos="fade-left">
...
</div>
Также существую варианты:
- data-aos="fade-up-right"
- data-aos="fade-up-left"
- data-aos="fade-down-right"
- data-aos="fade-down-left"
Flip эффекты
Вы можете обновлять страницу кнопкой f5, чтобы лучше рассмотреть анимацию.
HTML
<div data-aos="flip-left">
...
</div>
HTML
<div data-aos="flip-right">
...
</div>
HTML
<div data-aos="flip-up">
...
</div>
HTML
<div data-aos="flip-down">
...
</div>
Zoom эффекты
HTML
<div data-aos="zoom-in">
...
</div>
HTML
<div data-aos="zoom-in">
...
</div>
Еще zoom анимации:
- data-aos="zoom-in-up"
- data-aos="zoom-in-down"
- data-aos="zoom-in-left"
- data-aos="zoom-in-right"
- data-aos="zoom-out-up"
- data-aos="zoom-out-down"
- data-aos="zoom-out-right"
- data-aos="zoom-out-left"
3Кастомизация анимации при прокрутке страницы
Если вам не достаточно стандартных возможностей, можно кастомизировать анимацию добавив еще дата-атрибутов к вашему HTML элементу. Рассмотрим их подробнее.
- data-aos-offset — этот атрибут используется для того, чтобы начать анимацию при прокрутки страницы раньше или позже. Значение по умолчанию 120px.
- data-aos-duration — как видно из названия, атрибут отвечает за продолжительность анимации. Его значение может быть от 50 до 3000 с шагом в 50 мс. По умолчанию имеет значение 400.
- data-aos-easing — атрибут аналогичный animation-timing-function в CSS. Может принимать значения linear, ease-in-out, ease-out-quart и другие. Полный список вы можете найти в документации.
- data-aos-once — важная настройка, позволяет контролировать должна ли анимация воспроизводиться только при первом обращении к определенному элементу или при каждой прокрутке вверх/вниз. По дефолту анимация воспроизводится всякий раз при скролле, чтобы отменить это, укажите значение true.
- data-aos-anchor — запускает анимацию в зависимости от положения какого-нибудь другого элемента. В качестве значения принимает любой селектор. Значение по умолчанию null, то есть анимация будет запускаться относительно собственной позиции элемента.
- data-aos-anchor-placement — по дефолту анимация начинается как только верхняя часть элемента достигает нижней части экрана. Такое поведение можно изменить с помощью этого атрибута. Возможные значения top-bottom, top-center или top-top. Такие же комбинации можно сделать и с center или bottom.
Вот несколько примеров подобной кастомизации:
HTML
<div data-aos="fade-right"
data-aos-offset="300"
data-aos-easing="ease-in-sine">...</div>
HTML
<div data-aos="fade-up"
data-aos-anchor-placement="bottom-center">
</div>
HTML
<div data-aos="flip-left"
data-aos-easing="ease-out-cubic"
data-aos-duration="2000">...</div>
4Больше возможностей
Если хотите от AOS еще больше гибкости и возможностей, это библиотека может вам их предоставить. Вместо того чтобы писать атрибуты для каждого элемента в отдельности, можно добавить их в init()
JS
AOS.init({
offset: 200,
duration: 1000,
easing: 'ease-in-quad',
delay: 100,
});
Также можно отключить анимацию на определенных устройствах:
JS
AOS.init({
disable: 'mobile'
});
AOS.init({
disable: function () {
var maxWidth = 768;
return window.innerWidth < maxWidth;
}
});
В этой статье вы познакомились с библиотекой Animate on Scroll. Как видите AOS является отличным выбором для того, чтобы добавить анимацию при скролле на ваш сайт, ведь она очень просто устанавливается и прекрасно кастомизируется.