Библиотека AOS (Animate on Scroll) полагается на правильную инициализацию и корректное взаимодействие с DOM для запуска анимаций при прокрутке страницы. Если анимации не работают, важно рассмотреть несколько ключевых факторов.
AOS требует вызова метода AOS.init() после полной
загрузки DOM. Ошибки могут возникнуть в следующих случаях:
AOS.init() до загрузки элементов страницы,
например в <head> без события
DOMContentLoaded.Правильный пример инициализации:
document.addEventListener('DOMContentLoaded', function() {
AOS.init({
duration: 1200,
once: true,
easing: 'ease-in-out'
});
});
Ключевые параметры и их влияние:
duration — длительность анимации в миллисекундах.once — если true, анимация запускается
только один раз при прокрутке.easing — тип кривой ускорения анимации.Элементы должны содержать корректные атрибуты data-aos.
Основные ошибки:
data-aos.fade-in вместо
fade-up).display: none), которые не учитываются при инициализации
AOS.Пример корректной разметки:
<div data-aos="fade-up" data-aos-delay="200" data-aos-duration="1000">
Контент с анимацией
</div>
Дополнительные атрибуты:
data-aos-delay — задержка перед запуском анимации.data-aos-duration — переопределение глобальной
длительности для конкретного элемента.data-aos-offset — смещение точки запуска анимации
относительно верхней границы окна.Некорректный запуск анимаций часто связан с конфликтами CSS или JS:
overflow: hidden
или transform на родительских контейнерах может блокировать
вычисление позиции элемента.AOS.refresh().// Обновление позиции элементов после динамического добавления контента
AOS.refresh();
AOS сканирует DOM только при инициализации. Если элементы добавляются динамически (например, через AJAX), анимации на них не сработают без обновления:
// После добавления новых элементов
AOS.refreshHard();
Разница между методами:
AOS.refresh() — пересчитывает позиции существующих
элементов.AOS.refreshHard() — полностью пересоздаёт список
анимируемых элементов, включая новые.Если анимация не запускается, стоит проверить точку срабатывания:
data-aos-offset задаёт смещение в пикселях.
Большое значение может делать анимацию недоступной в видимой
области.120.<div data-aos="fade-right" data-aos-offset="50">
Контент
</div>
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 is not defined или
data-aos not recognized.
Некорректная работа может проявляться на мобильных устройствах:
display: none на мобильных устройствах не
будут анимироваться, так как библиотека не видит их в DOM.Использование условной инициализации:
if(window.innerWidth > 768){
AOS.init();
}
Для проверки работы:
border: 1px solid red;) для контроля позиции.aos-animate.scroll действительно достигает
элемента, активируя анимацию.Если систематически проверять эти аспекты — инициализацию, разметку, динамические изменения, конфликты CSS/JS и точки срабатывания — большинство проблем с некорректным запуском анимаций AOS устраняется без сложных обходных решений.