Для начала необходимо подключить библиотеку fullPage.js. Она состоит из JavaScript-файла и CSS-стилей. Минимальный пример подключения выглядит следующим образом:
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fullPage.js/4.0.25/fullpage.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullPage.js/4.0.25/fullpage.min.js"></script>
Инициализация производится с помощью конструктора
new fullpage():
new fullpage('#fullpage', {
autoScrolling: true,
navigation: true,
scrollBar: false
});
Ключевые параметры:
autoScrolling – управление скроллингом страницы.navigation – отображение навигационных точек.scrollBar – использование стандартного скроллбара
браузера.Основные метрики для анализа работы fullPage.js включают:
Для точного измерения этих показателей можно использовать инструменты браузера, такие как Chrome DevTools, вкладка Performance.
Использование scrollBar: true
Включение нативного скролла уменьшает нагрузку на основной поток,
особенно на мобильных устройствах.
Минимизация тяжелых элементов внутри секций
Анимации, видео и сложные DOM-структуры значительно замедляют рендеринг.
Их лучше загружать по мере необходимости с использованием
lazyLoad.
Декомпозиция секций Если страница содержит большое количество секций, стоит разбивать их на подстраницы или использовать динамическую подгрузку контента.
Отключение fitToSection и
scrollOverflow при необходимости Эти опции требуют
дополнительных вычислений при каждом скролле, что может снижать
FPS.
fullPage.js предоставляет ряд событий, которые помогают анализировать производительность:
onLeave(origin, destination, direction) – срабатывает
перед переходом между секциями.afterLoad(origin, destination, direction) – фиксирует
время загрузки новой секции.afterRender() – позволяет определить момент полной
инициализации библиотеки.Пример профилирования времени загрузки секций:
new fullpage('#fullpage', {
afterLoad: function(origin, destination, direction){
console.timeEnd('Section Load: ' + destination.index);
},
onLeave: function(origin, destination, direction){
console.time('Section Load: ' + destination.index);
}
});
transform вместо
top/left для анимаций смещения.FullPage.js поддерживает динамическую подгрузку контента:
new fullpage('#fullpage', {
lazyLoad: true
});
Для сложных анимаций и эффекта параллакса лучше использовать
requestAnimationFrame вместо стандартного таймера
setInterval:
function animate(){
// кастомная анимация
requestAnimationFrame(animate);
}
animate();
Такой подход синхронизирует анимацию с перерисовкой браузера, что улучшает плавность и снижает лаги при прокрутке секций fullPage.js.
parallax.console.time и
console.timeEnd.performance.now() для
точных измерений JavaScript-кода.Пример точного измерения времени рендеринга секции:
fullpage_api.setAllowScrolling(false);
let start = performance.now();
// симуляция тяжелой операции
setTimeout(() => {
let end = performance.now();
console.log('Render Time: ', end - start, 'ms');
fullpage_api.setAllowScrolling(true);
}, 100);
Профилирование производительности fullPage.js сводится к контролю:
Правильная настройка опций, минимизация тяжелых DOM-операций и использование современных инструментов профилирования позволяют обеспечить плавную работу страниц с большим количеством секций и сложной анимацией.