При работе с fullPage.js часто возникает необходимость управлять большим количеством мультимедийного контента — изображениями, видео и аудио. Для оптимальной производительности и снижения времени загрузки страницы следует учитывать ленивую загрузку медиа, использование оптимизированных форматов и корректную настройку плагина.
new fullpage('#fullpage', {
autoScrolling: true,
navigation: true,
lazyLoading: true, // встроенная поддержка ленивой загрузки изображений
anchors: ['firstPage', 'secondPage', 'thirdPage']
});
Включение параметра lazyLoading: true позволяет
fullPage.js автоматически подгружать изображения и видео только при
переходе к соответствующему разделу. Это снижает нагрузку на сеть и
ускоряет первоначальную отрисовку страницы.
Для ленивой загрузки изображений рекомендуется использовать атрибут
data-src вместо стандартного src. fullPage.js
заменяет его на src при активации секции.
<div class="section">
<img data-src="images/photo1.webp" alt="Photo 1">
</div>
<div class="section">
<img data-src="images/photo2.webp" alt="Photo 2">
</div>
Преимущества использования data-src и современных
форматов изображений, таких как WebP, включают:
Видео, встроенное в секции, является одним из самых ресурсоемких элементов. Для оптимизации можно:
data-src.Пример:
<div class="section">
<video class="lazy-video" data-src="videos/intro.mp4" muted playsinline></video>
</div>
fullpage_api.setAllowScrolling(true); // активация скроллинга
document.addEventListener('fpAfterLoad', function(event) {
let section = event.detail.section;
let video = section.querySelector('.lazy-video');
if (video && !video.src) {
video.src = video.dataset.src;
video.play();
}
});
Такой подход гарантирует, что видео не будет загружено до момента, когда пользователь действительно попадет на соответствующую секцию.
Фоновые изображения для секций часто оказываются тяжелее обычных
тегов <img>. Решения:
background-image с
медиа-запросами для разных разрешений.data-background в
fullPage.js:new fullpage('#fullpage', {
sectionsColor: ['#fff', '#f2f2f2', '#ccc'],
lazyLoading: true
});
<div class="section" data-background="images/bg1.webp"></div>
<div class="section" data-background="images/bg2.webp"></div>
fullPage.js автоматически загрузит фоновое изображение при активации секции.
Несмотря на ленивую загрузку, некоторые ресурсы требуют предварительной загрузки, чтобы избежать визуальных задержек. К ним относятся:
Используется стандартный HTML <link rel="preload">
или встроенный скрипт:
<link rel="preload" href="images/hero.webp" as="image">
const preloadImages = ['images/hero.webp', 'images/logo.webp'];
preloadImages.forEach(src => {
const img = new Image();
img.src = src;
});
fullPage.js предоставляет события onLeave и
afterLoad, которые позволяют управлять медиа:
Пример:
new fullpage('#fullpage', {
onLeave: function(origin, destination, direction){
let video = origin.item.querySelector('video');
if(video) video.pause();
},
afterLoad: function(origin, destination, direction){
let video = destination.item.querySelector('video');
if(video && !video.src) {
video.src = video.dataset.src;
video.play();
}
}
});
data-background — экономия ресурсов при
переключении секций.Эти подходы совместно позволяют добиться плавного скроллинга, быстрого времени загрузки и минимальной нагрузки на браузер, даже при работе с большим объемом медиа-контента.