Библиотека fullPage.js реализует прокрутку как последовательность
полноэкранных секций, переключение между которыми сопровождается
анимацией. По умолчанию используется плавный вертикальный сдвиг
контейнера, создающий эффект «листания страниц». Основной принцип —
трансформация одного общего контейнера, внутри которого расположены
секции, что обеспечивает высокую производительность за счёт
использования CSS-свойств transform и аппаратного
ускорения.
Ключевым параметром, определяющим характер перехода, является скорость анимации:
new fullpage('#fullpage', {
scrollingSpeed: 700
});
Значение задаётся в миллисекундах и влияет на длительность перемещения между секциями. Чем выше значение, тем более «тягучей» становится анимация.
По умолчанию fullPage.js использует translate3d, что
позволяет добиться плавных переходов без лагов:
transform: translate3d(0px, -100%, 0px);
Такой подход минимизирует перерисовку и активно использует GPU.
Параметр css3 управляет способом анимации:
new fullpage('#fullpage', {
css3: true
});
true — применяется CSS3 (transform,
transition)false — используется JavaScript (jQuery animate)CSS3-режим предпочтителен, так как обеспечивает:
Характер движения задаётся функциями сглаживания (easing):
new fullpage('#fullpage', {
easing: 'easeInOutCubic',
easingcss3: 'cubic-bezier(0.645, 0.045, 0.355, 1.000)'
});
Разделение:
easing — для JavaScript-анимацииeasingcss3 — для CSS3Примеры популярных функций:
ease — плавное ускорение и замедлениеlinear — равномерное движениеease-in — ускорение в началеease-out — замедление в концеКастомные кривые cubic-bezier позволяют создавать
уникальные ощущения движения.
Параллакс создаёт иллюзию глубины за счёт разной скорости движения элементов. В fullPage.js реализуется через расширения или кастомную логику.
Пример с использованием CSS:
.section {
background-attachment: fixed;
}
Или через Jav * aScript:
new fullpage('#fullpage', {
onLeave: function(origin, destination, direction){
const bg = destination.item.querySelector('.parallax-bg');
bg.style.transform = 'translateY(50px)';
}
});
Параллакс усиливает визуальное восприятие и делает переходы более динамичными.
Плавное появление/исчезновение секций вместо сдвига:
new fullpage('#fullpage', {
fadingEffect: true
});
Этот режим отключает вертикальную трансформацию и заменяет её на
изменение прозрачности (opacity). Подходит для:
Внутри секций могут находиться горизонтальные слайды:
<div class="section">
<div class="slide">Слайд 1</div>
<div class="slide">Слайд 2</div>
</div>
Анимация переключения задаётся аналогично вертикальной:
new fullpage('#fullpage', {
scrollingSpeed: 600
});
Дополнительно:
translateXfullPage.js предоставляет события для контроля анимаций:
Срабатывает перед переходом:
onLeave: function(origin, destination, direction){
console.log('Переход с', origin.index, 'на', destination.index);
}
Срабатывает после завершения:
afterLoad: function(origin, destination){
console.log('Секция загружена:', destination.index);
}
Эти события позволяют:
Анимации можно комбинировать с CSS или сторонними библиотеками:
.fade-in {
opacity: 0;
transition: opacity 0.8s ease;
}
.fade-in.active {
opacity: 1;
}
afterLoad: function(origin, destination){
destination.item.querySelector('.fade-in').classList.add('active');
}
afterLoad: function(origin, destination){
const el = destination.item.querySelector('.box');
el.classList.add('animate__animated', 'animate__fadeInUp');
}
Непрерывная прокрутка создаёт ощущение «бесконечного» движения:
new fullpage('#fullpage', {
continuousVertical: true
});
При достижении последней секции переход происходит к первой без резкого обрыва.
Если контент внутри секции превышает высоту экрана:
new fullpage('#fullpage', {
scrollOverflow: true
});
В этом случае:
Имитация zoom-анимации:
onLeave: function(origin, destination){
origin.item.style.transform = 'scale(0.8)';
destination.item.style.transform = 'scale(1)';
}
Используется вместе с CSS:
.section {
transition: transform 0.7s ease;
}
Возможность отключения анимации при необходимости:
new fullpage('#fullpage', {
scrollingSpeed: 0
});
Или динамически:
fullpage_api.setScrollingSpeed(0);
Полезно при:
Для плавных переходов важно учитывать:
transform вместо
top/leftРекомендации:
will-change: transform;position: fixed внутри секцийВозможны сложные сценарии:
Пример:
new fullpage('#fullpage', {
scrollingSpeed: 800,
onLeave: function(origin, destination){
origin.item.classList.add('fade-out');
destination.item.classList.add('fade-in');
}
});
fullPage.js поддерживает дополнительные эффекты через расширения:
parallaxcardswaterEffectdropEffectПодключение:
new fullpage('#fullpage', {
parallax: true,
parallaxOptions: {
type: 'reveal',
percentage: 62
}
});
Расширения значительно расширяют визуальные возможности без ручной реализации сложной логики.
API позволяет контролировать переходы:
fullpage_api.moveTo(2);
fullpage_api.moveSectionDown();
fullpage_api.moveSectionUp();
Это даёт возможность:
Иногда требуется отложить анимацию:
onLeave: function(origin, destination){
setTimeout(() => {
destination.item.classList.add('animate');
}, 300);
}
Задержки помогают:
fullPage.js автоматически добавляет классы:
active — текущая секцияfp-completely — полностью загруженаПример:
.section .content {
opacity: 0;
transform: translateY(30px);
transition: all 0.6s ease;
}
.section.active .content {
opacity: 1;
transform: translateY(0);
}
Это один из самых удобных способов анимации без JS.
Переходы могут быть связаны с меню:
new fullpage('#fullpage', {
menu: '#menu'
});
При смене секции:
Оптимальный подход — баланс между визуальной выразительностью и производительностью.