Событие afterLoad — одно из ключевых событий библиотеки
fullPage.js, которое вызывается после полной
загрузки и отображения секции на экране. Это событие особенно
важно для реализации динамического поведения страницы, анимаций и
управления состоянием интерфейса после завершения прокрутки.
afterLoad подключается через объект настроек при
инициализации fullPage.js или через метод
fullpage_api.setAllowScrolling и другие события. Основной
синтаксис выглядит так:
new fullpage('#fullpage', {
afterLoad: function(origin, destination, direction){
console.log("Секция загружена:", destination.index);
}
});
Параметры функции:
origin – объект предыдущей секции, с которой была
выполнена прокрутка. Основные свойства:
origin.index // индекс предыдущей секции
origin.anchor // якорь предыдущей секции (если используется)
origin.item // HTML-элемент секцииdestination – объект текущей секции, которая только
что была загружена. Основные свойства:
destination.index
destination.anchor
destination.itemdirection – строка "up" или
"down", указывающая направление прокрутки.
После загрузки секции часто требуется запуск анимаций или добавление классов:
afterLoad: function(origin, destination, direction){
const section = destination.item;
section.classList.add('animate');
}
Использование destination.item позволяет точно управлять
конкретной секцией без необходимости поиска её через селекторы.
afterLoad удобно использовать для подгрузки изображений,
видео или других тяжелых элементов только тогда, когда секция становится
видимой:
afterLoad: function(origin, destination, direction){
const lazyImages = destination.item.querySelectorAll('[data-src]');
lazyImages.forEach(img => {
img.src = img.dataset.src;
img.removeAttribute('data-src');
});
}
Такой подход позволяет сократить время первичной загрузки страницы и экономит трафик.
Можно управлять состоянием навигации, подсветкой пунктов меню и другими визуальными индикаторами:
afterLoad: function(origin, destination, direction){
const menuItems = document.querySelectorAll('.menu-item');
menuItems.forEach(item => item.classList.remove('active'));
const activeItem = document.querySelector(`.menu-item[data-index="${destination.index}"]`);
if(activeItem) activeItem.classList.add('active');
}
Если секции имеют атрибут data-anchor,
afterLoad позволяет синхронизировать URL с текущей
секцией:
afterLoad: function(origin, destination, direction){
history.replaceState(null, null, '#' + destination.anchor);
}
Это особенно полезно при реализации динамических ссылок и для возможности прямого перехода к конкретной секции.
afterLoad часто применяется вместе с:
onLeave – вызывается до начала прокрутки, позволяет
управлять переходами и отменять их при необходимости.afterRender – вызывается один раз после рендера
страницы, для начальной инициализации элементов.Пример комбинирования:
new fullpage('#fullpage', {
onLeave: function(origin, destination, direction){
origin.item.classList.remove('highlight');
},
afterLoad: function(origin, destination, direction){
destination.item.classList.add('highlight');
}
});
destination.item вместо прямых
селекторов для оптимальной производительности.requestAnimationFrame внутри afterLoad для
плавности работы.direction может быть полезно для различной
анимации при скролле вверх или вниз.Появление блоков по очереди при загрузке секции:
afterLoad: function(origin, destination, direction){
const items = destination.item.querySelectorAll('.fade-in');
items.forEach((el, index) => {
setTimeout(() => el.classList.add('visible'), index * 200);
});
}
Запуск видео только на активной секции:
afterLoad: function(origin, destination, direction){
const videos = document.querySelectorAll('video');
videos.forEach(v => v.pause());
const activeVideo = destination.item.querySelector('video');
if(activeVideo) activeVideo.play();
}
afterLoad является фундаментальным инструментом для
создания интерактивных и динамических страниц с fullPage.js,
предоставляя полный контроль над действиями после завершения прокрутки и
визуализации секций.