Частой ошибкой является попытка инициализировать библиотеку до того, как DOM полностью загрузился. Например:
AOS.init({
duration: 1200,
});
Если этот код расположен в <head> без события
DOMContentLoaded или без defer/async для скрипта, анимации
могут не применяться к элементам, которые ещё не существуют на странице.
Правильная практика:
document.addEventListener('DOMContentLoaded', () => {
AOS.init({
duration: 1200,
once: true
});
});
Использование опции once: true предотвращает повторное
проигрывание анимаций при скролле назад, что часто требуется в
лендингах.
AOS не отслеживает элементы, добавленные на страницу после первоначальной инициализации. Частая ошибка — попытка применить анимацию к элементам, созданным через JavaScript после загрузки страницы.
Правильное решение — вызвать метод AOS.refresh() после
добавления новых элементов:
const newElement = document.createElement('div');
newElement.classList.add('aos-item');
newElement.setAttribute('data-aos', 'fade-up');
document.body.appendChild(newElement);
// Обновляем AOS
AOS.refresh();
AOS.refresh() пересчитывает позиции элементов и
корректно активирует анимации на вновь добавленных блоках.
Некорректное использование CSS может блокировать анимации. Типичные ошибки:
overflow: hidden на родительских контейнерах, что
обрезает анимацию.opacity: 0 или transform
напрямую через CSS без использования AOS, что конфликтует с
библиотекой.Правильная практика — задавать анимации только через атрибут
data-aos и управлять стилями через классы
aos-init и aos-animate.
.aos-item {
opacity: 1; /* не ставить 0, если используется AOS */
}
data-aosНекорректное написание атрибутов приводит к игнорированию анимаций. Частые проблемы:
data-aos="fadeup" вместо
fade-up.data-aos-easing или
data-aos-duration.Правильный пример:
<div data-aos="fade-up" data-aos-duration="1000" data-aos-easing="ease-in-out">
Контент
</div>
Следует проверять документацию на поддерживаемые типы анимаций и параметры.
Часто встречается попытка многократного вызова
AOS.init(). Это может привести к дублированию классов
aos-animate и некорректной работе анимаций.
Оптимально инициализировать библиотеку один раз и использовать методы
AOS.refresh() или AOS.refreshHard() для
обновления состояния элементов.
AOS.init({ duration: 1200 });
// После изменения DOM
AOS.refresh(); // вместо повторного init
offsetАтрибут data-aos-offset регулирует, на каком расстоянии
от верхнего края окна должна срабатывать анимация. Ошибки:
Рекомендуется настраивать индивидуально для разных блоков:
<div data-aos="slide-up" data-aos-offset="200">
Блок с отступом анимации
</div>
Некоторые пользователи замечают, что анимации не работают на мобильных браузерах. Частые причины:
disable опция установлена некорректно:AOS.init({
disable: 'mobile' // отключает анимацию на мобильных
});
Для корректной работы стоит использовать функцию:
AOS.init({
disable: function() {
return window.innerWidth < 768; // отключаем только на узких экранах
}
});
duration или использовать более
лёгкие эффекты.Иногда AOS конфликтует с библиотеками, изменяющими DOM или
добавляющими скролл-события, например с fullpage.js или
locomotive-scroll. В таких случаях анимации не срабатывают.
Решение:
AOS.refresh() после завершения
скролл-инициализации.Иногда разработчики пытаются вручную добавлять классы
aos-init и aos-animate вместо использования
AOS. Это приводит к некорректной анимации и конфликтам с атрибутами. Все
манипуляции должны проходить через методы AOS и атрибуты
data-aos.
once и повторной анимациейУстановка once: true отключает повторную анимацию при
скролле обратно. Частая ошибка — ожидание повторного воспроизведения
элементов, что не происходит. Для повторного проигрывания необходимо
once: false.
AOS.init({
duration: 1200,
once: false
});
Это важно учитывать при проектировании интерфейсов с интерактивными секциями.