В библиотеке AOS (Animate on Scroll) событие
aos:in является одним из ключевых механизмов, позволяющих
реагировать на момент появления элемента в видимой области окна
браузера. Это событие генерируется каждый раз, когда элемент, к которому
применены анимации AOS, полностью или частично входит в область
видимости пользователя.
Событие aos:in используется для:
Событие подключается с помощью метода addEventListener к
элементу document. Пример базового синтаксиса:
document.addEventListener('aos:in', ({ detail }) => {
console.log('Элемент появился в зоне видимости:', detail);
});
Параметр detail содержит DOM-элемент,
который вызвал событие. Это позволяет точно определить, какой элемент
активировал анимацию, что особенно важно при наличии множества
анимируемых блоков на странице.
aos:in может срабатывать несколько раз для одного и того же
элемента, если он выходит и снова входит в область видимости,
если не установлен параметр
once: true.aos:out – библиотека
AOS также генерирует событие aos:out, которое фиксирует
момент, когда элемент покидает видимую область. Совместное использование
этих событий позволяет создавать сложные интерактивные сценарии.aos:in всегда вызывается после добавления класса анимации к
элементу, что дает возможность использовать CSS-переходы или JS-анимации
синхронно.1. Запуск дополнительной функции при появлении блока
document.addEventListener('aos:in', ({ detail }) => {
if(detail.classList.contains('feature-block')) {
startCounter(detail);
}
});
function startCounter(element) {
let count = 0;
const target = element.querySelector('.counter');
const interval = setInterval(() => {
count += 1;
target.textContent = count;
if(count >= 100) clearInterval(interval);
}, 20);
}
2. Добавление класса при активации анимации
document.addEventListener('aos:in', ({ detail }) => {
detail.classList.add('active-animation');
});
3. Отправка события в аналитику при скролле к элементу
document.addEventListener('aos:in', ({ detail }) => {
if(detail.dataset.track === 'section') {
analytics.track('SectionViewed', { sectionId: detail.id });
}
});
aos:inonce – логическое значение
(true/false). Если true, событие срабатывает
только один раз для элемента.offset – смещение в пикселях,
определяющее, когда элемент считается появившимся в области видимости.
Событие aos:in срабатывает после достижения этого
порога.duration – длительность анимации в
миллисекундах; влияет на визуальное совпадение с событием, хотя событие
срабатывает в момент входа элемента, а не окончания анимации.detail для точного определения
элемента, особенно если на странице много анимируемых блоков.requestAnimationFrame или отложенные функции, чтобы не
блокировать основной поток при срабатывании события.aos:in.Событие aos:in является мощным инструментом управления
моментом появления анимированных элементов. Оно предоставляет точный хук
для выполнения любых JS-действий синхронно с анимацией, что делает AOS
не только инструментом для визуальных эффектов, но и удобной платформой
для интерактивного скролл-контента.