FullPage.js предоставляет возможность создавать полноэкранные веб-сайты с эффектом прокрутки секций, и одной из самых интересных функций является параллакс — визуальный эффект, при котором элементы перемещаются с разной скоростью относительно движения страницы, создавая ощущение глубины. В fullPage.js параллакс реализован через сочетание CSS и JavaScript API библиотеки.
Для начала необходимо подключить библиотеку fullPage.js:
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fullPage.js/4.1.4/fullpage.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullPage.js/4.1.4/fullpage.min.js"></script>
Создаём структуру HTML:
<div id="fullpage">
<div class="section" data-anchor="section1">
<div class="parallax-layer" data-speed="0.3">Фон</div>
<div class="content">Содержимое секции 1</div>
</div>
<div class="section" data-anchor="section2">
<div class="parallax-layer" data-speed="0.5">Фон</div>
<div class="content">Содержимое секции 2</div>
</div>
</div>
Каждая секция содержит слой с классом parallax-layer,
который будет двигаться с заданной скоростью
data-speed.
Параллакс в fullPage.js настраивается через опцию
scrollBar и события скролла. Пример инициализации с
кастомным эффектом:
new fullpage('#fullpage', {
autoScrolling: true,
scrollBar: true,
onLeave: function(origin, destination, direction){
let currentSection = origin.item;
let nextSection = destination.item;
const layers = currentSection.querySelectorAll('.parallax-layer');
layers.forEach(layer => {
let speed = layer.dataset.speed;
layer.style.transform = `translateY(${direction === 'down' ? -100 * speed : 100 * speed}px)`;
});
},
afterLoad: function(origin, destination, direction){
const layers = destination.item.querySelectorAll('.parallax-layer');
layers.forEach(layer => {
layer.style.transition = 'transform 0.7s ease-out';
layer.style.transform = 'translateY(0)';
});
}
});
.parallax-layer {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
z-index: 1;
background-size: cover;
background-position: center;
}
.section .content {
position: relative;
z-index: 2;
text-align: center;
padding: 50px;
color: #fff;
}
parallax-layer) может быть изображением
или градиентом.Для сложных эффектов параллакса создаются несколько слоёв с разными
data-speed:
<div class="section">
<div class="parallax-layer" data-speed="0.2">Дальний фон</div>
<div class="parallax-layer" data-speed="0.5">Средний фон</div>
<div class="parallax-layer" data-speed="0.8">Передний план</div>
<div class="content">Главный контент</div>
</div>
Чем меньше значение data-speed, тем медленнее движется
слой. Эффект глубины достигается именно разницей скоростей движения
слоёв.
FullPage.js позволяет сочетать параллакс с динамической прокруткой с
помощью scrollBar или scrollOverflow. Для
плавного взаимодействия слоёв с мышью можно использовать событие
scroll:
document.querySelector('#fullpage').addEventListener('scroll', function(e){
const sections = document.querySelectorAll('.section');
sections.forEach(section => {
const layers = section.querySelectorAll('.parallax-layer');
layers.forEach(layer => {
let speed = parseFloat(layer.dataset.speed);
let offset = window.scrollY * speed;
layer.style.transform = `translateY(${offset}px)`;
});
});
});
Этот метод создаёт эффект параллакса, который реагирует на любое вертикальное движение страницы, а не только на переключение секций.
background-size: cover; и lazy-loading, чтобы не тормозила
прокрутка.transform: translate3d(0, y, 0) вместо
обычного translateY ускоряет рендер за счёт аппаратного
ускорения.Параллакс можно совмещать с:
scrollHorizontally).afterLoad и
onLeave.Использование параллакса в fullPage.js позволяет создавать динамичные и визуально привлекательные сайты с глубиной и эффектом движения. Комбинация CSS, JavaScript и событий библиотеки даёт полный контроль над поведением каждого слоя на странице.