Библиотека fullPage.js активно управляет DOM-структурой, добавляя и удаляя CSS-классы в зависимости от текущего состояния секций, слайдов и элементов навигации. Эти классы позволяют:
Классы состояний автоматически назначаются библиотекой, и их понимание критично для тонкой настройки поведения и стилей.
.activeНазначается текущей активной секции (.section) и
текущему активному слайду (.slide).
Особенности:
.section.active {
opacity: 1;
transform: scale(1);
}
.section {
opacity: 0.5;
transform: scale(0.95);
transition: all 0.5s ease;
}
.fp-prev и
.fp-nextДобавляются к секциям и слайдам, которые находятся соответственно перед и после активного элемента.
Применение:
.section.fp-prev {
transform: translateY(-50px);
}
.section.fp-next {
transform: translateY(50px);
}
.fp-loadedДобавляется к секции или слайду после полной загрузки содержимого, включая изображения и медиа.
Практическое использование:
.section:not(.fp-loaded) {
visibility: hidden;
}
.section.fp-loaded {
visibility: visible;
}
.fp-completelyНазначается элементу, когда он полностью вошёл в область видимости и завершил прокрутку.
Отличие от .active:
.active — назначается сразу при активации.fp-completely — после завершения анимации
перехода.section.fp-completely h1 {
animation: fadeIn 1s ease forwards;
}
.fp-enabledДобавляется к body при инициализации fullPage.js.
Назначение:
body.fp-enabled {
overflow: hidden;
}
.fp-viewing-SECTION-SLIDEДинамический класс, добавляемый к body, отражающий
текущую секцию и слайд.
Формат:
fp-viewing-{anchor}-{slideIndex}
Пример:
body.fp-viewing-home-0 {
background-color: #000;
}
Преимущества:
.fp-navКонтейнер точечной навигации.
.fp-nav ul li a.activeАктивный пункт навигации.
.fp-nav ul li a.active span {
background-color: red;
}
.fp-tooltipОтображает всплывающие подсказки для навигации.
.fp-tooltip {
font-size: 12px;
color: #fff;
}
.fp-slidesКонтейнер всех слайдов внутри секции.
.fp-slideОтдельный слайд.
.fp-slidesContainerВнутренний контейнер, который перемещается при горизонтальной прокрутке.
.fp-scrollableДобавляется к элементам с внутренней прокруткой (если используется
scrollOverflow: true).
.fp-scrollable {
overflow-y: auto;
}
.fp-movingДобавляется к body во время прокрутки.
Назначение:
body.fp-moving {
pointer-events: none;
}
.fp-responsiveДобавляется при включении адаптивного режима (например, при
responsiveWidth).
body.fp-responsive .section {
height: auto;
}
Если используется синхронизация с меню (menu опция):
.active (в меню)Назначается элементу меню, соответствующему активной секции.
#menu li.active a {
color: red;
}
Комбинирование встроенных классов позволяет создавать сложные состояния:
.section.active.fp-completely {
background: linear-gradient(to right, #ff7e5f, #feb47b);
}
Поскольку fullPage.js динамически управляет классами:
body.fp-viewing-about-0 .section.active {
color: white;
}
Анимация появления:
.section {
opacity: 0;
transition: opacity 0.7s ease;
}
.section.active {
opacity: 1;
}
Задержка для завершённого состояния:
.section.fp-completely .content {
transform: translateY(0);
}
.section .content {
transform: translateY(50px);
transition: transform 0.5s ease;
}
Разные стили для направлений:
.section.fp-prev {
opacity: 0.3;
}
.section.fp-next {
opacity: 0.7;
}
Хотя классы назначаются автоматически, возможно добавление собственных:
new fullpage('#fullpage', {
afterLoad: function(origin, destination) {
destination.item.classList.add('custom-loaded');
}
});
Это позволяет комбинировать встроенные состояния с пользовательской логикой.
Использование классов состояний совместно с CSS-переменными:
body.fp-viewing-home-0 {
--main-color: #ff0000;
}
body.fp-viewing-about-0 {
--main-color: #0000ff;
}
.section {
color: var(--main-color);
}
При переходе в responsive-режим:
.fp-enabled может удалятьсяЭто требует дополнительной проверки стилей:
body:not(.fp-responsive) .section {
height: 100vh;
}
Отсутствие анимаций:
.fp-completely не используется.activeКонфликт стилей:
Непредсказуемое поведение:
Рекомендуемый подход:
.section, .slide).active, .fp-completely)body.fp-viewing-*).fp-responsive)Пример структуры:
/* База */
.section {}
/* Состояния */
.section.active {}
.section.fp-completely {}
/* Глобальные */
body.fp-viewing-home-0 {}
/* Адаптив */
body.fp-responsive .section {}
CSS-классы состояний в fullPage.js формируют полноценную систему управления интерфейсом:
Глубокое понимание этих классов превращает fullPage.js из простой библиотеки прокрутки в мощный инструмент для создания интерактивных интерфейсов.