Библиотека fullPage.js предоставляет мощные возможности для создания полноэкранных скролл-сайтов, где переходы между секциями реализуются плавно и предсказуемо. Ключевым аспектом является нормализация прокрутки, позволяющая одинаково управлять поведением страницы на различных устройствах и браузерах.
Для начала необходимо подключить библиотеку fullPage.js и стили:
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fullPage.js/4.0.22/fullpage.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullPage.js/4.0.22/fullpage.min.js"></script>
Инициализация выполняется через объект
new fullpage():
new fullpage('#fullpage', {
autoScrolling: true,
scrollHorizontally: true,
fitToSection: true,
easing: 'easeInOutCubic',
scrollingSpeed: 700
});
Ключевые параметры:
autoScrolling: true – включает вертикальную прокрутку в
стиле «fullPage», скрывая стандартный скролл браузера.fitToSection: true – автоматически выравнивает контент
по экрану после скролла.scrollingSpeed – задаёт скорость анимации перехода
между секциями.easing – управляет кривой анимации для плавного
движения.В разных браузерах и устройствах поведение колесика мыши, тач-жестов и клавиш может различаться. fullPage.js нормализует эти события, чтобы каждая прокрутка инициировала переход между секциями:
Page Up/Down инициируют переход на следующую или предыдущую
секцию.wheel, touchstart,
touchmove, keydown, гарантируя
консистентность.С помощью параметров можно регулировать, как быстро и с какой реакцией происходит нормализованный скролл:
new fullpage('#fullpage', {
normalScrollElements: '.scrollable',
touchSensitivity: 15,
bigSectionsDestination: 'top'
});
normalScrollElements – CSS-селектор элементов, внутри
которых стандартный скролл сохраняется (например, длинные блоки с
контентом).touchSensitivity – контролирует, насколько быстро
реагирует страница на свайпы на мобильных устройствах.bigSectionsDestination – определяет позицию при скролле
больших секций: top, bottom или
null.fullPage.js поддерживает горизонтальные слайды
внутри вертикальных секций. Для нормализации прокрутки важно правильно
настроить scrollHorizontally и обработку событий:
new fullpage('#fullpage', {
scrollHorizontally: true,
controlArrows: true,
slidesNavigation: true
});
scrollHorizontally включает горизонтальный скролл через
тач или стрелки.controlArrows добавляет стрелки управления
слайдом.slidesNavigation отображает навигацию внизу
слайдов.Важный момент: вертикальная прокрутка останавливается на горизонтальных слайдах, пока пользователь не завершит свайп по горизонтали, что предотвращает перескакивание между секциями.
Для точной настройки можно использовать методы и события:
fullpage_api.setAutoScrolling(true|false) –
динамически включить или выключить автоматический скролл.
fullpage_api.setScrollingSpeed(ms) – изменить
скорость анимации на лету.
События:
onLeave(origin, destination, direction) – вызывается
перед сменой секции.afterLoad(origin, destination, direction) – после
завершения анимации.afterRender – после инициализации fullPage.js.Пример динамического изменения:
fullpage_api.setAutoScrolling(false);
document.querySelector('.toggleScroll').addEventListener('click', () => {
fullpage_api.setAutoScrolling(true);
});
fullPage.js позволяет комбинировать нормализованный скролл с обычными полосами прокрутки, используя параметры:
scrollBar: true – включает нативный скролл, сохраняя
плавные переходы.autoScrolling: false – используется в режиме обычного
скролла, но сохраняются возможности секций и событий.Эта комбинация полезна для лендингов с большим количеством контента, где важно позволить пользователю прокручивать страницу стандартным способом.
scrollHorizontally и методов управления событиями.Нормализация прокрутки является фундаментальной для создания плавного и предсказуемого интерфейса на сайтах с полноэкранными секциями.