Совместимость расширений

FullPage.js предоставляет богатый набор функций для создания полноэкранных скроллируемых сайтов, однако при использовании нескольких расширений одновременно необходимо учитывать их совместимость. Некорректная интеграция может привести к конфликтам в поведении навигации, анимаций или событий.


Основные расширения и их взаимодействие

1. ScrollOverflow Расширение ScrollOverflow отвечает за добавление вертикального скролла внутри секций, если их содержимое превышает высоту экрана.

  • При активном ScrollOverflow важно учитывать, что другие расширения, изменяющие положение скролла (scrollHorizontally, parallax), могут некорректно определять текущую позицию внутри секции.
  • Настройка scrollOverflowOptions должна быть согласована с параметрами других расширений, использующих внутренние контейнеры секций. Например, при включении parallax следует отключать прокрутку внутри элементов с эффектом параллакса.

2. Navigation и SlideNavigation Расширения навигации отвечают за отображение буллетов и стрелок для перехода между секциями и слайдами.

  • При использовании menu и anchors необходимо следить за тем, чтобы имена якорей не конфликтовали с навигационными элементами других расширений.
  • SlideNavigation может конфликтовать с пользовательскими обработчиками кликов на стрелках, особенно если одновременно используется кастомная анимация перехода с scrollHorizontally.

3. ScrollHorizontally Позволяет создавать горизонтальные слайды внутри секций.

  • Совместимость с ScrollOverflow требует включения interlockedSlides при наличии внутренних скроллов.
  • Переходы с клавиатуры или через меню могут не срабатывать корректно, если одновременно используются события onSlideLeave или onLeave с кастомными функциями, изменяющими прокрутку.

4. Parallax Добавляет параллакс-эффект для фонов и контента секций.

  • При интеграции с ScrollOverflow и ScrollHorizontally необходимо учитывать высоту внутренних контейнеров: элементы с параллаксом не должны находиться внутри элементов с независимым скроллом.
  • Использование CSS-трансформаций в параллаксе может конфликтовать с анимациями, реализованными через afterLoad и onLeave, если они изменяют позиции элементов.

5. Responsive Extensions FullPage.js поддерживает адаптивное поведение через опции responsiveWidth и responsiveHeight.

  • Некоторые расширения (например, scrollHorizontally и parallax) при уменьшении размеров экрана могут перестать работать. Настройка адаптивных условий должна учитывать отключение расширений на малых разрешениях.
  • Кастомные обработчики событий должны проверять, активно ли расширение, чтобы не возникало ошибок при вызове методов неинициализированного модуля.

Принципы корректной интеграции расширений

  1. Инициализация в правильном порядке Некоторые расширения требуют, чтобы fullPage.js был полностью инициализирован перед их подключением. Например, scrollHorizontally и parallax должны инициализироваться после основной конфигурации секций.

  2. Изоляция кастомных обработчиков Обработчики событий (onLeave, afterLoad, onSlideLeave) должны учитывать, какое расширение активно, чтобы избежать конфликтов. Рекомендуется использовать проверки типа if (fullpage_api.getActiveSlide()) для внутренних слайдов.

  3. Согласование CSS и DOM-структуры Многие расширения создают собственные контейнеры и стили. Конфликты часто возникают, если пользовательские CSS-правила или скрипты изменяют DOM-структуру секций.

  4. Тестирование на всех разрешениях Полноэкранные сайты с несколькими расширениями могут вести себя по-разному на десктопе, планшете и мобильных устройствах. Тестирование должно включать проверку скролла, навигации и анимаций в различных сочетаниях расширений.


Типичные проблемы и решения

Проблема Возможная причина Решение
Скролл не реагирует на колёсико мыши Конфликт ScrollOverflow и ScrollHorizontally Использовать interlockedSlides: true и проверять внутренние контейнеры
Параллакс сдвигается некорректно Элементы параллакса внутри скроллимой секции Перенести элементы параллакса в отдельный контейнер или отключить внутренний скролл
Навигация по якорям не срабатывает Совпадение anchor с menu и SlideNavigation Проверить уникальность якорей и синхронизировать меню с API fullPage.js
Адаптивность ломается Расширения активны на малых разрешениях Использовать responsiveWidth/responsiveHeight для отключения конфликтующих расширений

Практические рекомендации

  • Всегда подключать расширения через официальный пакет, чтобы избежать версионных конфликтов.
  • При необходимости комбинирования нескольких расширений изучать документацию на наличие опций совместимости.
  • Использовать методы API (fullpage_api.reBuild(), fullpage_api.setAllowScrolling()) после динамических изменений DOM для корректной работы расширений.
  • Для сложных сайтов рекомендуется создать отдельный модуль конфигурации расширений, где инициализация и проверка совместимости проводится централизованно.

Совместимость расширений fullPage.js требует внимательного подхода к порядку и параметрам их инициализации, правильного управления событиями и адаптивного поведения. Учет этих факторов позволяет избежать конфликтов и обеспечить стабильную работу полноэкранного интерфейса с множеством функций.