Библиотека fullPage.js реализует постраничную прокрутку (full-screen scrolling), при которой каждая секция воспринимается как отдельный экран. Для корректной навигации и интеграции с браузером важна синхронизация состояния интерфейса с историей браузера: адресной строкой, кнопками «Назад» и «Вперёд», а также возможностью прямого перехода по URL.
В основе лежит использование якорей (anchors) и механизма History API или hash-навигации.
Каждая секция может иметь уникальный идентификатор, задаваемый через
параметр anchors:
new fullpage('#fullpage', {
anchors: ['firstPage', 'secondPage', 'thirdPage']
});
При переходе между секциями URL автоматически изменяется:
example.com/#firstPage
example.com/#secondPage
lockAnchorsПозволяет отключить изменение URL при прокрутке:
lockAnchors: true
recordHistoryКонтролирует запись переходов в историю браузера:
recordHistory: false
true (по умолчанию):
false:
lockAnchors:recordHistory: false сохраняет изменение URLlockAnchors: true полностью отключает работу с
якорямиanimateAnchorОпределяет, будет ли анимация при загрузке страницы с якорем:
animateAnchor: true
true:
false:
example.com/#secondPage
При загрузке:
anchors и вложенные слайдыДля горизонтальных слайдов внутри секций используются комбинированные якоря:
anchors: ['section1', 'section2']
И для слайдов:
<div class="section">
<div class="slide" data-anchor="slide1"></div>
<div class="slide" data-anchor="slide2"></div>
</div>
URL формируется так:
example.com/#section1/slide2
moveTo
и синхронизация историиПрограммный переход:
fullpage_api.moveTo('secondPage');
Или к слайду:
fullpage_api.moveTo('section1', 'slide2');
recordHistory: true добавляется записьfullPage.js автоматически обрабатывает события popstate
или изменения hash:
scrollBar и
историяscrollBar: true
afterLoad и работа с историейПозволяет отслеживать изменения:
afterLoad: function(origin, destination, direction){
console.log(destination.anchor);
}
onLeave и контроль переходовonLeave: function(origin, destination, direction){
return true;
}
В современных версиях fullPage.js используется:
history.pushStatehistory.replaceStateЭто обеспечивает:
В некоторых случаях требуется переопределение поведения:
window.addEventListener('popstate', function(event) {
// кастомная логика
});
Использование якорей имеет ограничения:
anchors: ['one', 'two']
При наличии трёх секций — некорректная работа истории.
anchors: ['page', 'page']
Приводит к конфликтам в URL и навигации.
lockAnchors вместе с recordHistoryНепредсказуемое поведение:
new fullpage('#fullpage', {
anchors: ['home', 'about', 'contacts'],
recordHistory: true
});
Поведение:
new fullpage('#fullpage', {
lockAnchors: true,
recordHistory: false
});
Поведение:
new fullpage('#fullpage', {
anchors: ['page1', 'page2'],
recordHistory: false,
animateAnchor: false
});
Поведение:
Переход по ссылке:
<a href="#secondPage">Перейти</a>
fullPage.js перехватывает событие и выполняет:
Возможна пересборка:
fullpage_api.destroy('all');
И повторная инициализация с новыми anchors.
menu: '#menu'
HTML:
<ul id="menu">
<li data-menuanchor="firstPage"><a href="#firstPage">First</a></li>
</ul>
recordHistory и lockAnchors
задают стратегию работы