Практическое применение событий

Для начала работы с библиотекой AOS необходимо подключить её стили и скрипты в проект:

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aos@2.3.4/dist/aos.css" />
<script src="https://cdn.jsdelivr.net/npm/aos@2.3.4/dist/aos.js"></script>

После подключения вызывается метод AOS.init(), который активирует базовую функциональность анимаций при скролле:

AOS.init({
  duration: 800, // продолжительность анимации в миллисекундах
  easing: 'ease-in-out', // тип анимации
  once: true, // анимация срабатывает один раз
});

Параметр once позволяет контролировать, будет ли элемент анимироваться повторно при повторном скролле. Этот параметр особенно полезен для улучшения производительности на страницах с большим количеством анимированных блоков.


Прослушивание событий AOS

Библиотека предоставляет несколько событий, позволяющих отслеживать жизненный цикл анимации элемента:

  1. aos:in – срабатывает, когда элемент появляется в зоне видимости и начинает анимацию.
  2. aos:out – срабатывает, когда элемент выходит из зоны видимости.
  3. aos:destroy – вызывается при уничтожении элемента, если требуется очистка ресурсов.

Пример использования:

document.addEventListener('aos:in', ({ detail }) => {
  console.log('Элемент появился:', detail);
});

document.addEventListener('aos:out', ({ detail }) => {
  console.log('Элемент покинул экран:', detail);
});

В detail передаётся объект DOM-элемента, на который срабатывает событие, что позволяет выполнять индивидуальные действия для каждого блока.


Применение событий для интерактивности

События AOS можно использовать для динамического изменения контента и поведения элементов:

  • Добавление классов после анимации:
document.addEventListener('aos:in', ({ detail }) => {
  detail.classList.add('highlight');
});
  • Запуск анимаций CSS или JS:
document.addEventListener('aos:in', ({ detail }) => {
  anime({
    targets: detail,
    translateX: [0, 100],
    duration: 1000
  });
});
  • Отслеживание покидания элемента для оптимизации ресурсов:
document.addEventListener('aos:out', ({ detail }) => {
  const video = detail.querySelector('video');
  if (video) video.pause();
});

Такой подход позволяет запускать и останавливать мультимедиа, инициировать API-вызовы или подгружать данные только тогда, когда элемент реально виден пользователю.


Перезапуск анимации вручную

Иногда требуется обновить или заново запустить анимацию на элементе:

AOS.refresh();

Метод refresh() пересчитывает позиции элементов на странице и повторно инициализирует анимации. Он полезен, если DOM-структура динамически меняется после загрузки страницы, например, при подгрузке контента через AJAX.


Использование кастомных атрибутов для управления событиями

Каждому элементу можно задать дополнительные атрибуты, влияющие на поведение анимации:

  • data-aos-delay – задержка перед запуском анимации.
  • data-aos-duration – индивидуальная длительность.
  • data-aos-once – перезапуск анимации только один раз.

Пример комбинирования:

<div data-aos="fade-up" data-aos-delay="200" data-aos-duration="1000" data-aos-once="true">
  Контент с индивидуальной анимацией
</div>

При появлении блока событие aos:in сработает с учётом всех этих настроек, что позволяет точно синхронизировать анимацию с другими элементами страницы.


Интеграция с другими библиотеками и фреймворками

AOS легко комбинируется с React, Vue или Angular через прослушивание событий на корневом элементе:

useEffect(() => {
  AOS.init({ duration: 600 });
  
  const handleIn = ({ detail }) => {
    console.log('React компонент анимирован', detail);
  };

  document.addEventListener('aos:in', handleIn);
  
  return () => {
    document.removeEventListener('aos:in', handleIn);
  };
}, []);

Подобная интеграция позволяет запускать дополнительные анимации или логику компонентов только тогда, когда пользователь видит соответствующий блок, снижая нагрузку на рендеринг и улучшая UX.


Практическое применение событий в проектах

  • Лендинги и промо-сайты: элементы появляются с эффектами для привлечения внимания.
  • Галереи изображений и портфолио: запуск анимаций при прокрутке делает интерфейс живым.
  • Интерактивные карточки и виджеты: изменение состояния при появлении элемента, запуск видео или подсветки.
  • Оптимизация медиа и данных: элементы загружаются или активируются только при попадании в viewport, экономя ресурсы.

Комбинация прослушивания событий aos:in и aos:out с динамическим изменением DOM и запуском JS-анимаций делает AOS мощным инструментом для интерактивных интерфейсов.