Для правильного управления секциями и слайдами на странице необходимо понимать, как fullPage.js обрабатывает DOM и внутренние состояния. Библиотека хранит информацию о текущих позициях, индексах и стилях элементов в момент инициализации. Любые динамические изменения в структуре страницы после инициализации требуют вызова специальных методов обновления.
Основной метод для обновления fullPage.js — это
fullpage_api.reBuild(). Он пересчитывает размеры всех
секций и слайдов, заново привязывает события скролла и обновляет
внутренние индексы. Используется в случаях, когда:
// Пример использования
fullpage_api.reBuild();
Метод не требует перезагрузки страницы, но полностью пересоздаёт внутренние структуры библиотеки, что может быть затратным для производительности при частых вызовах.
FullPage.js поддерживает динамическое управление структурой с помощью
методов addSection, removeSection и
аналогичных для слайдов (addSlide,
removeSlide). Эти методы автоматически обновляют индексы и
внутренние состояния без необходимости вызова reBuild()
после каждого действия.
// Добавление новой секции
fullpage_api.addSection('<div class="section">Новая секция</div>', 2); // вставка на позицию 2
// Удаление секции
fullpage_api.removeSection(3); // удаляет третью секцию
Важно учитывать, что при добавлении или удалении секций с анимацией
или большим количеством контента следует вызвать
fullpage_api.reBuild() после всех изменений, чтобы
гарантировать корректное позиционирование и плавный скролл.
FullPage.js предоставляет встроенные опции для адаптивного поведения
через responsiveWidth и responsiveHeight.
Однако при динамическом изменении размеров окна или контейнера
необходимо вручную пересчитывать размеры с помощью:
window.addEventListener('resize', () => {
fullpage_api.reBuild();
});
Также можно использовать метод
fullpage_api.setAutoScrolling(true/false) для переключения
между режимами скролла при изменении условий отображения.
Для обновления слайдов внутри секции используется метод
updateSlide(), который пересчитывает размеры слайдов и
корректирует смещение активного слайда.
// Пример обновления слайдов в секции
fullpage_api.updateSlide(1, '<div class="slide">Обновлённый контент</div>');
Если контент слайда включает медиа (изображения или видео), которые
загружаются асинхронно, следует вызвать reBuild() после
полной загрузки медиа, чтобы fullPage.js корректно вычислил размеры и
центровку.
Частые вызовы reBuild() могут снижать
производительность, особенно на мобильных устройствах. Чтобы
оптимизировать процесс:
reBuild() один
раз после всех манипуляций;afterRender и afterResize
колбэки для запуска обновлений только при необходимости;load
для вызова обновления.window.addEventListener('load', () => {
fullpage_api.reBuild();
});
FullPage.js предоставляет несколько колбэков, позволяющих автоматически реагировать на изменения:
afterLoad — срабатывает после активации секции;afterSlideLoad — после активации слайда;afterResize — после изменения размеров окна;onLeave — перед переходом на другую секцию.Эти колбэки позволяют запускать методы обновления только при реальной необходимости, повышая производительность и обеспечивая корректное поведение интерфейса.
Для устойчивого и гибкого управления структурой fullPage.js рекомендуется:
addSection и addSlide
для динамического контента.reBuild() после массовых изменений размеров
или добавления/удаления множества секций и слайдов.load и resize для
корректной работы с медиа и адаптивными элементами.Эта стратегия позволяет поддерживать плавную навигацию и корректное отображение контента без необходимости полной перезагрузки страницы.