Для начала необходимо подключить библиотеку AOS к проекту. В HTML-файле подключаются стили и скрипт:
<link href="https://cdn.jsdelivr.net/npm/aos@2.3.4/dist/aos.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/aos@2.3.4/dist/aos.js"></script>
После подключения выполняется инициализация AOS в основном JavaScript-файле:
AOS.init({
offset: 120, // Смещение по вертикали для запуска анимации
delay: 0, // Задержка анимации в миллисекундах
duration: 600, // Продолжительность анимации в миллисекундах
easing: 'ease-in-out', // Функция сглаживания
once: true, // Анимация выполняется один раз при скролле
mirror: false // Анимация повторяется при прокрутке назад
});
Навигационные элементы часто представляют собой меню, кнопки или
ссылки. Для их анимации достаточно добавить атрибут
data-aos к соответствующим HTML-элементам.
Пример для горизонтального меню:
<nav class="navbar">
<ul>
<li data-aos="fade-down" data-aos-delay="100">Главная</li>
<li data-aos="fade-down" data-aos-delay="200">О нас</li>
<li data-aos="fade-down" data-aos-delay="300">Услуги</li>
<li data-aos="fade-down" data-aos-delay="400">Контакты</li>
</ul>
</nav>
Здесь используются ключевые параметры:
fade-up,
fade-down, slide-left,
slide-right, zoom-in и др.)<li data-aos="fade-down" data-aos-delay="200" data-aos-duration="800">О нас</li>
Для меню с множеством пунктов важно создать эффект цепочки.
Используется последовательное увеличение задержки
(data-aos-delay).
<ul class="nav-menu">
<li data-aos="fade-right" data-aos-delay="100">Пункт 1</li>
<li data-aos="fade-right" data-aos-delay="200">Пункт 2</li>
<li data-aos="fade-right" data-aos-delay="300">Пункт 3</li>
<li data-aos="fade-right" data-aos-delay="400">Пункт 4</li>
</ul>
Такой подход позволяет визуально подчеркнуть порядок элементов и сделать интерфейс более динамичным.
Для кнопок типа «Назад вверх» или «Скрытого меню» рекомендуется
использовать появление с плавным увеличением (zoom-in) или
сдвигом (slide-up / slide-down):
<button class="scroll-top" data-aos="zoom-in" data-aos-delay="0">Наверх</button>
Для кнопок можно задать once: false, чтобы анимация повторялась при прокрутке вверх и вниз:
AOS.init({
offset: 100,
duration: 500,
once: false
});
Библиотека AOS позволяет отключать анимацию на маленьких экранах для
оптимизации производительности. Используется атрибут
data-aos-once и проверка через CSS-медиа-запросы.
AOS.init({
disable: 'mobile'
});
Также можно использовать условное добавление классов:
if (window.innerWidth > 768) {
AOS.init({ duration: 600 });
}
<li data-aos="fade-up" data-aos-anchor-placement="top-bottom" data-aos-delay="150">Услуги</li>
top-bottom,
center-center, bottom-top).document.addEventListener('aos:in', ({ detail }) => {
if(detail.classList.contains('navbar')) {
console.log('Навигация видна');
}
});
transition для свойств opacity и
transform:.navbar li {
transition: transform 0.6s ease, opacity 0.6s ease;
}
Если пункты меню добавляются через JavaScript после загрузки страницы, необходимо обновлять AOS:
// Добавление элемента динамически
const newItem = document.createElement('li');
newItem.textContent = 'Блог';
newItem.setAttribute('data-aos', 'fade-down');
newItem.setAttribute('data-aos-delay', '500');
document.querySelector('.navbar ul').appendChild(newItem);
// Обновление AOS
AOS.refresh();
Это гарантирует, что новые элементы будут корректно анимированы при скролле.
Можно задать общие параметры анимации для всех навигационных элементов через CSS-переменные и Jav * aScript:
:root {
--aos-duration: 700ms;
--aos-easing: ease-in-out;
}
AOS.init({
duration: parseInt(getComputedStyle(document.documentElement).getPropertyValue('--aos-duration')),
easing: getComputedStyle(document.documentElement).getPropertyValue('--aos-easing')
});
Такой подход обеспечивает единообразие анимаций на всем сайте и облегчает последующие изменения.
Для сложной навигации, включающей выпадающие меню и скролл-слежение, AOS можно комбинировать с ScrollSpy или библиотеками для sticky-меню. Главное — управлять offset и delay, чтобы анимация не конфликтовала с поведением других скриптов.
AOS.init({
offset: 100,
duration: 500,
once: true,
mirror: true
});
mirror: true полезно для эффекта возврата анимации при
прокрутке назад, что делает навигацию более интерактивной.
disable: 'mobile' или медиа-запросы.Эти принципы позволяют создавать современную и отзывчивую навигацию с плавной анимацией, улучшающей визуальное восприятие интерфейса.