FullPage.js предоставляет удобные возможности для создания эффектных секций с прокруткой на всю страницу. Одним из ключевых аспектов визуального оформления каждой секции является установка фонового изображения. Рассмотрим детально, как это делается.
Каждая секция в fullPage.js представлена блоком
<div> с классом section или
пользовательским классом. Для задания фонового изображения применяется
стандартное CSS-свойство background-image.
Пример базовой структуры HTML:
<div id="fullpage">
<div class="section" id="section1"></div>
<div class="section" id="section2"></div>
<div class="section" id="section3"></div>
</div>
CSS для установки фонового изображения:
#section1 {
background-image: url('images/bg1.jpg');
background-size: cover; /* Изображение масштабируется, чтобы покрыть всю секцию */
background-position: center; /* Центрирование изображения */
background-repeat: no-repeat; /* Отмена повторения изображения */
}
#section2 {
background-image: url('images/bg2.jpg');
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}
Ключевые моменты:
background-size: cover; обеспечивает масштабирование
изображения по всей секции без искажений.background-position: center; фиксирует центр
изображения в центре секции.background-repeat: no-repeat; предотвращает повторение
изображения при изменении размеров экрана.FullPage.js позволяет работать с событиями секций, что даёт
возможность динамически менять фон при скролле. Используется событие
afterLoad, которое вызывается после загрузки каждой
секции.
Пример:
new fullpage('#fullpage', {
afterLoad: function(origin, destination, direction){
let section = destination.item;
switch(destination.index){
case 0:
section.style.backgroundImage = "url('images/bg1.jpg')";
break;
case 1:
section.style.backgroundImage = "url('images/bg2.jpg')";
break;
case 2:
section.style.backgroundImage = "url('images/bg3.jpg')";
break;
}
}
});
Пояснение:
destination.index — индекс текущей секции, начиная с
0.destination.item — DOM-элемент секции, куда можно
напрямую применять стили.Для более сложного оформления можно комбинировать изображения с градиентами или несколькими фоновыми слоями:
#section1 {
background-image: linear-gradient(rgba(0,0,0,0.3), rgba(0,0,0,0.3)), url('images/bg1.jpg');
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}
Преимущества:
Для корректного отображения на устройствах с разными разрешениями
рекомендуется использовать медиа-запросы или современные свойства CSS,
такие как background-attachment: fixed для создания
параллакс-эффекта.
#section1 {
background-image: url('images/bg1.jpg');
background-size: cover;
background-position: center;
background-repeat: no-repeat;
background-attachment: fixed;
}
@media (max-width: 768px) {
#section1 {
background-position: top;
}
}
Особенности:
background-attachment: fixed; создаёт эффект
параллакса, когда фон остаётся неподвижным при прокрутке.Большие изображения могут замедлять загрузку страницы. Важно использовать:
IntersectionObserver или плагин
fullPage.js lazyLoading для секций с фоновыми
изображениями.Пример ленивой загрузки через HTML-атрибут:
<div class="section" data-bg="images/bg1.jpg"></div>
JavaScript для подстановки фона при загрузке секции:
new fullpage('#fullpage', {
afterLoad: function(origin, destination, direction){
let section = destination.item;
if(section.dataset.bg){
section.style.backgroundImage = `url('${section.dataset.bg}')`;
}
}
});
Такой метод позволяет загружать изображения только тогда, когда они действительно нужны, что ускоряет первичную загрузку страницы.
Фоновые изображения можно комбинировать с видео для более динамичного
эффекта. Используется HTML <video> с абсолютным
позиционированием:
<div class="section" id="section1">
<video autoplay muted loop id="bg-video">
<source src="videos/bg.mp4" type="video/mp4">
</video>
</div>
CSS:
#section1 {
position: relative;
overflow: hidden;
}
#bg-video {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;
z-index: -1;
}
Преимущества:
Эти методы позволяют создавать привлекательные секции с эффектными фонами, сочетая CSS и возможности fullPage.js, обеспечивая при этом адаптивность и оптимизацию загрузки.