Библиотека AOS (Animate on Scroll) позволяет
создавать плавные анимации при прокрутке страницы. В стандартном
использовании достаточно инициализации через AOS.init(),
однако динамические изменения DOM требуют дополнительного управления
состоянием анимаций с помощью методов refresh и
refreshHard.
refreshМетод refresh обновляет внутренние данные AOS о позициях
элементов на странице. Он не пересоздаёт полностью
анимации, а только проверяет их текущие координаты и
видимость.
Сценарии использования refresh:
Динамическое добавление элементов в DOM
const newElement = document.createElement('div');
newElement.setAttribute('data-aos', 'fade-up');
document.body.appendChild(newElement);
AOS.refresh();
После добавления нового элемента refresh пересчитывает
его положение, чтобы анимация сработала при скролле.
Изменение размера или положения существующих
элементов Например, при разворачивании аккордеона или изменении
контента, влияющем на высоту блока, вызов refresh позволяет
корректно определить момент срабатывания анимации.
Особенности метода refresh:
refreshHard.refreshHardМетод refreshHard выполняет полную
переинициализацию библиотеки. Он удаляет все текущие слушатели
событий и перезапускает процесс анимации так, как если бы
AOS.init() вызывался заново.
Сценарии использования refreshHard:
Серьёзные изменения DOM Когда структура страницы полностью меняется (например, переключение вкладок с большим количеством контента или динамическая подгрузка большого количества элементов).
Проблемы с некорректным отображением анимаций
Если refresh не исправляет поведение, например, элементы
остаются невидимыми или анимации не срабатывают,
refreshHard гарантирует, что все элементы будут
пересчитаны.
Пример использования refreshHard:
// Полностью заменяем контент секции
const section = document.querySelector('.dynamic-section');
section.innerHTML = '<div data-aos="fade-right">Новый контент</div>';
AOS.refreshHard();
Особенности метода refreshHard:
refresh.refresh
и refreshHard| Параметр | refresh |
refreshHard |
|---|---|---|
| Тип обновления | Пересчёт координат элементов | Полная переинициализация библиотеки |
| Скорость | Быстро | Медленнее |
| Влияние на состояние анимаций | Сохраняет текущие анимации | Уничтожает и создаёт заново |
| Использование | Лёгкие изменения DOM, добавление новых элементов | Глобальные изменения DOM или исправление ошибок анимации |
refresh при добавлении
новых элементов или изменении размеров существующих блоков.refreshHard при полной
перестройке контента страницы или когда анимации перестают корректно
работать после изменений DOM.refreshHard на одной
странице, чтобы не перегружать рендеринг и обработку событий.Эффективное управление этими методами позволяет поддерживать корректное отображение анимаций без снижения производительности, особенно на страницах с динамическим контентом или интерактивными элементами.