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