Библиотека AOS обеспечивает плавную анимацию
элементов при прокрутке страницы, автоматически отслеживая изменения в
DOM. Один из ключевых параметров, влияющих на производительность и
поведение анимаций при динамическом изменении контента, — это
disableMutationObserver.
disableMutationObserver отвечает за включение или
отключение Mutation Observer, встроенного механизма,
который отслеживает изменения в DOM-дереве. По умолчанию AOS
автоматически реагирует на добавление новых элементов или изменение
структуры уже существующих элементов, чтобы анимации корректно
применялись ко всему контенту.
Тип значения: boolean По
умолчанию: false
false — наблюдатель активен, любые динамические
изменения DOM будут отслежены, и новые элементы автоматически получат
эффекты анимации.true — наблюдатель отключён, библиотека не будет
реагировать на новые элементы, анимации применяются только к тем
элементам, которые существовали при инициализации AOS.Статическая страница без динамического контента Если все элементы на странице загружаются сразу и не добавляются позже через JavaScript или AJAX, использование Mutation Observer не нужно. В этом случае рекомендуется устанавливать:
AOS.init({
disableMutationObserver: true
});
Это снижает нагрузку на браузер, особенно при больших страницах с множеством анимируемых блоков.
Динамически загружаемый контент Если на страницу добавляются новые элементы после первичной загрузки, например, через AJAX-запросы или ленивую подгрузку контента, наблюдатель должен быть активен:
AOS.init({
disableMutationObserver: false
});
В противном случае новые элементы не будут анимироваться, пока не
будет вызван метод AOS.refresh() вручную.
Производительность и оптимизация На сложных
страницах с большим количеством элементов наблюдение за изменениями DOM
может вызывать дополнительную нагрузку. В таких случаях есть смысл
отключить Mutation Observer и самостоятельно управлять обновлением
анимаций через AOS.refresh().
// Пример ручного обновления
someDynamicContentLoadFunction().then(() => {
AOS.refresh();
});startEvent – задаёт событие, после
которого инициализируется AOS. Если Mutation Observer отключён, новые
элементы, добавленные после startEvent, не будут
анимироваться автоматически.once – определяет, анимировать ли
элемент только один раз. При отключённом наблюдателе это значение влияет
только на первоначальные элементы.mirror – зеркальное повторение
анимаций при скролле вверх. Если новые элементы добавляются динамически,
без Mutation Observer их зеркальная анимация не будет работать
автоматически.disableMutationObserver: true
для минимизации нагрузки.false).AOS.refresh() после загрузки каждого блока контента.// Инициализация AOS с отключённым наблюдением за DOM
AOS.init({
duration: 800, // Длительность анимации
easing: 'ease-in-out', // Функция ускорения
once: true, // Анимация один раз
disableMutationObserver: true
});
// Позднее, при динамической подгрузке контента
loadNewItems().then(() => {
AOS.refresh(); // Применяем анимацию к новым элементам вручную
});
Mutation Observer отслеживает практически все изменения в DOM, включая добавление, удаление и изменение атрибутов. На больших страницах с множеством элементов это может вызвать:
Отключение disableMutationObserver полностью исключает
эти накладные расходы, что делает этот параметр ключевым инструментом
оптимизации.