Для использования библиотеки AOS необходимо подключить её CSS и JS
файлы на странице. После подключения инициализация происходит через
метод AOS.init(). Внутри инициализации можно передать
объект конфигурации с ключевыми параметрами, влияющими на
производительность и плавность анимаций:
AOS.init({
offset: 120, // смещение от верхнего края для активации анимации
delay: 0, // задержка перед началом анимации
duration: 400, // продолжительность анимации
easing: 'ease', // тип кривой ускорения
once: false, // анимация повторяется при повторном появлении элемента
mirror: false, // анимация срабатывает при прокрутке вверх
anchorPlacement: 'top-bottom', // точка активации относительно окна
});
Ключевые моменты для производительности: уменьшение
количества активных анимаций, корректная настройка
offset и duration, отключение повторной
анимации (once: true) для тяжелых страниц.
Для оценки производительности анимаций на странице рекомендуется использовать встроенные инструменты браузера (Chrome DevTools, Firefox Performance). Вкладка Performance позволяет:
Основная цель – определить, какие элементы и анимации
замедляют страницу. AOS применяет анимацию через изменение
CSS-классов с transform и opacity, что обычно
GPU-ускоряемо. Но большое количество одновременно активных элементов или
слишком частая пересборка DOM может создавать просадки FPS.
console.time() и console.timeEnd()
позволяют замерять время выполнения функций, например, обработки события
прокрутки.requestAnimationFrame для
анализа, сколько кадров в секунду (FPS) держит страница.Для страниц с большим количеством элементов анимацию можно запускать не сразу, а по мере их появления в DOM:
document.addEventListener('DOMContentLoaded', function() {
const lazyElements = document.querySelectorAll('.aos-lazy');
lazyElements.forEach(el => {
// Инициализация отдельного элемента при скролле
AOS.refreshHard(); // обновляет позиции элементов AOS
});
});
Каждое активное наблюдаемое событие увеличивает нагрузку. Рекомендуется:
once: true, если повторная анимация не
обязательна;transform и
opacity работают быстрее, чем width,
height или top.AOS применяет классы с анимациями, которые должны быть GPU-ускоряемыми. Для оптимизации:
will-change: transform, opacity для
элементов с активными анимациями;margin,
padding) во время анимации;translate3d вместо top/left для
движения элементов.Для реального времени можно использовать JavaScript для измерения производительности анимаций:
let lastFrame = performance.now();
function monitorFPS() {
const now = performance.now();
const fps = 1000 / (now - lastFrame);
lastFrame = now;
console.log('FPS:', fps.toFixed(1));
requestAnimationFrame(monitorFPS);
}
requestAnimationFrame(monitorFPS);
Падение FPS ниже 50 указывает на перегрузку страницы анимациями. В таком случае следует уменьшить количество одновременно анимируемых элементов или снизить сложность эффектов.
На слабых устройствах и мобильных браузерах нагрузка AOS может быть критичной. Рекомендации:
disable: 'mobile' в конфигурации AOS для
отключения анимаций на смартфонах;AOS.init({
disable: function() {
return window.innerWidth < 768; // отключение для мобильных
}
});
Если элементы добавляются динамически (через AJAX или фреймворки типа React/Vue), AOS требует обновления своих позиций:
// После добавления нового контента
AOS.refresh(); // пересчитывает положение новых элементов
Постоянное частое обновление (refresh) может снижать
FPS, поэтому обновлять позиции следует только при
необходимости, например после полной загрузки новых блоков.
transform,
opacity).once: true и mirror: false для
снижения нагрузки.AOS.refresh() точечно.Эти методы обеспечивают плавное отображение анимаций AOS даже на страницах с большим количеством элементов, минимизируя просадки производительности и нагрузки на рендеринг.