Библиотека fullPage.js активно использует собственные CSS-классы и inline-стили для управления разметкой, позиционированием и анимациями. Переопределение этих стилей требует понимания структуры DOM, специфичности CSS и особенностей, связанных с JavaScript-управлением прокруткой.
Основные классы, формируемые библиотекой:
.fp-section — основной контейнер секции.fp-slide — слайды внутри секции.fp-table и .fp-tableCell — используются
для вертикального центрирования.fp-scrollable — контейнеры с внутренней
прокруткой.fp-controlArrow, .fp-prev,
.fp-next — стрелки навигации.fp-slidesNav, .fp-nav — навигационные
элементыВсе эти классы могут быть переопределены через пользовательские стили.
Ключевой момент — правильный порядок подключения файлов:
<link rel="stylesheet" href="fullpage.min.css">
<link rel="stylesheet" href="custom.css">
Файл с пользовательскими стилями должен подключаться после стандартного CSS библиотеки.
Если стандартные стили имеют высокую специфичность, используются следующие подходы:
body .fp-section {
background-color: #111;
}
!important (крайний случай):.fp-section {
padding: 50px !important;
}
По умолчанию секции занимают 100% высоты окна:
.fp-section {
height: 100vh;
}
Изменение поведения:
.fp-section {
height: auto;
min-height: 100vh;
}
При отключении фиксированной высоты важно учитывать настройку:
new fullpage('#fullpage', {
autoScrolling: false
});
Стандартные секции не имеют внутренних отступов:
.fp-section {
padding: 0;
}
Добавление внутреннего пространства:
.fp-section {
padding: 60px 40px;
box-sizing: border-box;
}
Слайды внутри секций:
.fp-slide {
padding: 20px;
}
fullPage.js использует таблицы (display: table) для
центрирования:
.fp-table {
display: table;
}
.fp-tableCell {
display: table-cell;
vertical-align: middle;
}
Отключение этого поведения:
new fullpage('#fullpage', {
verticalCentered: false
});
И замена на flexbox:
.fp-section {
display: flex;
align-items: center;
justify-content: center;
}
Стандартная навигация:
#fp-nav ul li a span {
background: #333;
}
Изменение внешнего вида:
#fp-nav ul li a span {
width: 12px;
height: 12px;
background: transparent;
border: 2px solid #fff;
border-radius: 50%;
}
#fp-nav ul li a.active span {
background: #fff;
}
Позиционирование:
#fp-nav {
right: 20px;
}
Стандартные стрелки — это CSS-треугольники:
.fp-controlArrow.fp-prev {
border-color: transparent #fff transparent transparent;
}
Замена на собственные элементы:
.fp-controlArrow {
width: 40px;
height: 40px;
background-color: rgba(0,0,0,0.5);
border: none;
}
.fp-controlArrow::after {
content: '';
display: block;
width: 10px;
height: 10px;
border: solid white;
border-width: 0 2px 2px 0;
transform: rotate(135deg);
margin: auto;
}
Секции часто используются как полноэкранные блоки с фоном:
.fp-section {
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}
Пример:
.section-1 {
background-image: url('bg1.jpg');
}
Параллакс-эффект (упрощённый):
.fp-section {
background-attachment: fixed;
}
По умолчанию fullPage.js использует CSS-трансформации:
.fp-section {
transition: all 0.7s ease;
}
Изменение скорости:
.fp-section {
transition: all 1.2s cubic-bezier(0.77, 0, 0.175, 1);
}
Важно учитывать, что часть анимаций управляется JavaScript, поэтому чрезмерное вмешательство может нарушить логику прокрутки.
При использовании scrollOverflow: true:
.fp-scrollable {
overflow-y: auto;
}
Изменение внешнего вида полосы прокрутки:
.fp-scrollable::-webkit-scrollbar {
width: 6px;
}
.fp-scrollable::-webkit-scrollbar-thumb {
background: #888;
border-radius: 3px;
}
fullPage.js добавляет классы:
.active — текущая секция или слайд.fp-completely — полностью отображённая секцияПример использования:
.fp-section.active {
opacity: 1;
}
.fp-section {
opacity: 0.5;
transition: opacity 0.5s;
}
Анимация появления:
.fp-section .content {
transform: translateY(50px);
opacity: 0;
}
.fp-section.active .content {
transform: translateY(0);
opacity: 1;
transition: all 0.6s ease;
}
Некоторые элементы fullPage.js используют фиксированные значения
z-index:
#fp-nav {
z-index: 100;
}
Если элементы перекрываются:
.custom-header {
position: fixed;
z-index: 200;
}
fullPage.js часто используется с отключением авто-скролла на мобильных устройствах:
new fullpage('#fullpage', {
responsiveWidth: 768
});
Дополнительные стили:
@media (max-width: 768px) {
.fp-section {
padding: 20px;
}
#fp-nav {
display: none;
}
}
Библиотека часто добавляет inline-стили через Jav * aScript:
<div class="fp-section" style="height: 100vh;"></div>
Переопределение возможно через:
.fp-section {
height: auto !important;
}
Либо через конфигурацию:
new fullpage('#fullpage', {
fitToSection: false
});
Для гибкости удобно использовать CSS-переменные:
:root {
--section-bg: #111;
--accent-color: #ffcc00;
}
.fp-section {
background-color: var(--section-bg);
}
#fp-nav ul li a.active span {
background: var(--accent-color);
}
1. Стили не применяются
Причины:
Решение:
2. Ломается прокрутка
Причины:
position, overflow,
transformРешение:
.fp-section и
.fp-wrapper3. Некорректная высота секций
Причины:
heightРешение:
4. Проблемы с адаптивностью
Причины:
Решение:
responsiveWidth и media queriesГлубокое переопределение стилей требует аккуратного баланса между кастомизацией и сохранением логики работы библиотеки. Чем меньше вмешательство в базовые механизмы (позиционирование, трансформации, overflow), тем стабильнее поведение интерфейса.