Библиотека AOS (Animate on Scroll) используется для создания анимаций при прокрутке страницы. Основной момент, на который необходимо обратить внимание при работе с ней, — это момент инициализации, который напрямую влияет на корректное отображение анимаций.
Для начала подключение AOS осуществляется двумя способами:
<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.init({
duration: 1200, // продолжительность анимации в миллисекундах
easing: 'ease-in-out',// функция плавности
once: true, // анимация воспроизводится один раз
mirror: false // анимация воспроизводится при прокрутке назад
});
Инициализация библиотеки должна происходить после полной
загрузки DOM, иначе элементы, на которые назначены анимации,
могут быть ещё не созданы, и анимации не применятся. В современном
JavaScript это можно сделать через событие
DOMContentLoaded:
document.addEventListener('DOMContentLoaded', () => {
AOS.init();
});
Если библиотека инициализируется раньше, чем DOM полностью
сформирован, вызовы data-aos будут проигнорированы, и
анимации не сработают.
При использовании динамического контента (например, элементов, добавляемых через AJAX или фреймворки Vue/React) важно обновлять AOS после добавления новых элементов:
// Добавление нового элемента в DOM
const newElement = document.createElement('div');
newElement.setAttribute('data-aos', 'fade-up');
document.body.appendChild(newElement);
// Обновление AOS для новых элементов
AOS.refresh();
Метод AOS.refresh() пересчитывает позиции элементов и
заново инициализирует анимации, что критично для корректной работы при
динамических изменениях страницы.
Параметры, передаваемые в AOS.init, управляют поведением
анимаций на протяжении всего жизненного цикла страницы:
top-bottom, center-center и т.д.).Пример настройки с акцентом на момент запуска анимации:
AOS.init({
offset: 120,
duration: 800,
easing: 'ease-out-cubic',
once: false,
mirror: true,
anchorPlacement: 'top-bottom'
});
AOS тесно взаимодействует с жизненным циклом страницы:
AOS.init().AOS.refresh().Для страниц с большим количеством медиа и сложной версткой
рекомендуется инициализировать библиотеку после события
load, чтобы исключить смещение и неправильное
позиционирование анимаций:
window.addEventListener('load', () => {
AOS.init({ duration: 1000, once: true });
});
Правильная структура DOM критична для корректного расчёта позиции элементов:
display: none на момент
инициализации, анимация не будет работать; рекомендуется использовать
visibility: hidden или opacity: 0 для скрытия
до появления.Использование AOS.refreshHard() рекомендуется только в
случае значительных изменений DOM, так как этот метод пересчитывает все
позиции заново и может быть ресурсоёмким на больших страницах.
AOS.init() после полной загрузки
DOM (DOMContentLoaded) или ресурсов
(load).AOS.refresh() или
AOS.refreshHard().offset, duration,
once и mirror в зависимости от требуемого
поведения анимаций.Правильное понимание момента инициализации является ключевым для стабильной работы AOS и предотвращает большинство проблем с отображением анимаций.