5 способов создать прелоадер: улучшаем UX и снижаем отказы

Пройдите тест, узнайте какой профессии подходите
Сколько вам лет
0%
До 18
От 18 до 24
От 25 до 34
От 35 до 44
От 45 до 49
От 50 до 54
Больше 55

Для кого эта статья:

  • Веб-разработчики и дизайнеры, желающие улучшить пользовательский опыт своих сайтов.
  • Специалисты по UX/UI, которые ищут способы оптимизации интерфейсов.
  • Студенты или начинающие разработчики, заинтересованные в практическом применении технологий фронтенда.

    Представьте: пользователь кликает по ссылке вашего сайта, но ничего не происходит. Секунды тянутся, белый экран не меняется, и вот – посетитель закрывает вкладку. Так вы теряете клиентов. Прелоадеры – те самые анимированные индикаторы загрузки – превращают мучительное ожидание в микро-развлечение. По данным исследований Google, 53% посетителей покидают сайт, если страница грузится дольше 3 секунд. Добавление стильного прелоадера может снизить этот показатель до 38%. Разберём пять проверенных способов создания прелоадеров с готовым кодом, который вы можете скопировать и сразу применить. 🚀

Хотите глубже погрузиться в мир интерактивных веб-элементов? Обучение веб-разработке от Skypro откроет перед вами все секреты фронтенда. На курсе вы не только научитесь создавать впечатляющие прелоадеры, но и освоите построение полноценных веб-приложений с нуля. Программа построена на реальных проектах, а ваше портфолио пополнится работами, которые впечатлят любого работодателя.

Что такое прелоадер и зачем его добавлять на сайт

Прелоадер (preloader) — это анимированный элемент интерфейса, который отображается во время загрузки содержимого страницы. По сути, это визуальный индикатор, сигнализирующий пользователю, что загрузка идёт, и ему следует немного подождать. 🕒

Алексей Березин, UX-дизайнер

Помню случай с клиентским сайтом электронной коммерции, показатели отказов на котором достигали 62%. Анализ показал, что проблема была в медленной загрузке каталога товаров — пользователи просто уходили, видя пустую страницу. После внедрения анимированного прелоадера с индикатором прогресса отказы снизились до 37%, а конверсия выросла на 18%. Причём мы не ускорили сам сайт — просто дали пользователям понять, что система работает и ждать стоит.

Зачем же использовать прелоадеры на сайтах?

  • Снижение показателя отказов. Пользователи с большей вероятностью дождутся загрузки, если видят индикатор прогресса.
  • Улучшение UX. Прелоадеры создают ощущение контроля и предсказуемости.
  • Брендинг. Креативный прелоадер может стать элементом фирменного стиля.
  • Маскировка технических задержек. Особенно полезно для сайтов с тяжелым контентом.
Тип сайта Оптимальный тип прелоадера Рекомендуемое время показа
Корпоративный Минималистичный, в фирменных цветах До 3 секунд
Интернет-магазин С индикатором прогресса До 5 секунд
Портфолио/Креатив Анимированный, уникальный До 7 секунд
Новостной портал Легкий, ненавязчивый До 2 секунд

Прелоадеры особенно необходимы на сайтах с тяжелым контентом: портфолио дизайнеров, интернет-магазинах с большим количеством изображений, одностраничных приложениях и веб-приложениях со сложной логикой.

Пошаговый план для смены профессии

Простой CSS-прелоадер: минималистичное решение

Начнём с самого простого и универсального решения — CSS-спиннера. Этот вариант не требует подключения дополнительных библиотек, быстро внедряется и работает во всех современных браузерах. 💻

Вот базовый HTML-код, который нужно добавить в начало вашего <body>:

HTML
Скопировать код
<div class="preloader">
<div class="spinner"></div>
</div>

Теперь добавим стили CSS:

CSS
Скопировать код
.preloader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #fff;
display: flex;
justify-content: center;
align-items: center;
z-index: 9999;
}

.spinner {
width: 60px;
height: 60px;
border: 8px solid #f3f3f3;
border-top: 8px solid #3498db;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

Чтобы скрыть прелоадер после загрузки страницы, добавьте простой JavaScript:

JS
Скопировать код
window.addEventListener('load', function() {
const preloader = document.querySelector('.preloader');
preloader.style.opacity = '0';
setTimeout(function() {
preloader.style.display = 'none';
}, 500);
});

Вот что делает каждая часть кода:

  • HTML создает контейнер прелоадера и вращающийся элемент
  • CSS фиксирует прелоадер поверх всего содержимого страницы
  • Анимация вращения создается с помощью keyframes
  • JavaScript скрывает прелоадер после полной загрузки страницы

Вы можете легко кастомизировать этот прелоадер, изменяя цвета, размеры и скорость анимации. Например, для брендированного прелоадера замените цвет #3498db на фирменный.

Михаил Дорофеев, Frontend-разработчик

Работая над сайтом для фотостудии, я столкнулся с проблемой: галерея с высококачественными изображениями грузилась до 10 секунд на среднем устройстве. Клиент категорически отказывался жертвовать качеством фото. Решением стал двухэтапный прелоадер: первые 3 секунды показывалась анимированная иконка камеры в фирменных цветах, затем появлялся индикатор загрузки с процентами. После внедрения время просмотра сайта увеличилось на 27%, хотя скорость загрузки осталась прежней. Иногда UX-решения эффективнее технической оптимизации.

Анимированный прелоадер с использованием CSS и JavaScript

Простой спиннер хорош для базовых случаев, но иногда требуется более сложная анимация или индикатор прогресса. Создадим продвинутый прелоадер, который показывает процент загрузки страницы. 📊

Вот необходимый HTML:

HTML
Скопировать код
<div class="preloader-advanced">
<div class="loader-content">
<div class="loader-circle"></div>
<div class="loader-text">0%</div>
</div>
</div>

CSS для анимированного прелоадера:

CSS
Скопировать код
.preloader-advanced {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #121212;
display: flex;
justify-content: center;
align-items: center;
z-index: 9999;
}

.loader-content {
position: relative;
width: 200px;
height: 200px;
}

.loader-circle {
position: absolute;
border-radius: 50%;
width: 100%;
height: 100%;
border: 10px solid #333;
border-top-color: #00ff8a;
animation: rotate 2s linear infinite;
}

.loader-text {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
color: #fff;
font-size: 24px;
font-family: Arial, sans-serif;
}

@keyframes rotate {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

Теперь JavaScript для расчёта прогресса загрузки:

JS
Скопировать код
document.addEventListener('DOMContentLoaded', function() {
const preloader = document.querySelector('.preloader-advanced');
const loaderText = document.querySelector('.loader-text');
let loadProgress = 0;

// Имитация загрузки (в реальном проекте заменить на реальный расчет загрузки)
const interval = setInterval(function() {
loadProgress += Math.floor(Math.random() * 10) + 1;

if (loadProgress >= 100) {
loadProgress = 100;
clearInterval(interval);

setTimeout(function() {
preloader.style.opacity = '0';
setTimeout(function() {
preloader.style.display = 'none';
}, 500);
}, 500);
}

loaderText.textContent = loadProgress + '%';
}, 200);

// Для реальной загрузки можно использовать событие загрузки ресурсов
window.addEventListener('load', function() {
loadProgress = 100;
loaderText.textContent = '100%';

setTimeout(function() {
preloader.style.opacity = '0';
setTimeout(function() {
preloader.style.display = 'none';
}, 500);
}, 500);
});
});

Этот код создаёт прелоадер с процентным индикатором и плавной анимацией исчезновения. В примере используется имитация загрузки, но вы можете заменить её на реальный расчёт:

  • Для отслеживания загрузки изображений используйте API window.performance
  • Для AJAX-запросов можно использовать события прогресса XMLHttpRequest
  • Для одностраничных приложений подключите прелоадер к событиям навигации вашего фреймворка
Элемент прелоадера Функция Влияние на UX
Цифровой счетчик Показ точного прогресса загрузки +45% удержания внимания
Анимация вращения Визуальное подтверждение активности +28% восприятия скорости
Темный фон Контрастность и фокусировка внимания +17% запоминаемости бренда
Плавное исчезновение Плавный переход к контенту +33% удовлетворенности пользователей

Этот тип прелоадера особенно эффективен для сайтов с длительной загрузкой, где пользователю важно понимать, сколько еще ждать. 🕰️

Готовые библиотеки для быстрого добавления прелоадера

Не всегда есть время создавать прелоадер с нуля. К счастью, существуют готовые библиотеки, предлагающие десятки стильных вариантов. Рассмотрим три популярных решения. ⚡

1. Pace.js — минималистичная библиотека, автоматически определяющая прогресс загрузки страницы.

Установка и использование:

HTML
Скопировать код
<!-- Добавьте в <head> -->
<script src="https://cdn.jsdelivr.net/npm/pace-js@1.2.4/pace.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/pace-js@1.2.4/themes/blue/pace-theme-minimal.css">

Pace.js не требует дополнительной настройки — библиотека автоматически отслеживает Ajax-запросы, события DOM и загрузку ресурсов. Вы можете выбрать один из десятков готовых стилей или создать собственный.

2. NProgress — изящная тонкая полоса прогресса в стиле YouTube/Medium.

HTML
Скопировать код
<!-- Добавьте в <head> -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/nprogress/0.2.0/nprogress.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/nprogress/0.2.0/nprogress.min.js"></script>

<script>
// Запустить прогресс
NProgress.start();

// По завершении загрузки
window.addEventListener('load', function() {
NProgress.done();
});
</script>

NProgress идеально подходит для одностраничных приложений и Ajax-интенсивных сайтов, где нужно показывать прогресс при переходе между разделами.

3. Three Dots — коллекция CSS-анимаций "загрузки" в виде точек.

HTML
Скопировать код
<!-- Добавьте в <head> -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/three-dots/0.2.0/three-dots.min.css">

<!-- В <body> используйте один из вариантов -->
<div class="dot-elastic"></div>

Преимущества готовых библиотек:

  • Скорость внедрения — подключение занимает минуты вместо часов разработки
  • Надежность — библиотеки тестируются сообществом разработчиков
  • Кроссбраузерность — работают во всех современных браузерах
  • Разнообразие стилей — десятки вариантов анимаций на выбор

При выборе библиотеки обращайте внимание на:

  • Размер библиотеки (влияет на производительность)
  • Способ определения прогресса загрузки
  • Совместимость с вашей технологической стеком
  • Возможность кастомизации под дизайн вашего сайта

Для React-приложений рекомендуется рассмотреть react-spinners или react-loading, для Vue.js — vue-spinner. 🧩

Оптимизация работы прелоадера для улучшения UX сайта

Недостаточно просто добавить прелоадер на сайт — важно правильно его настроить и оптимизировать для максимального улучшения пользовательского опыта. 🛠️

1. Правильный таймер исчезновения

Слишком быстрое исчезновение прелоадера может создать "мерцание", а слишком долгое — ненужную задержку. Оптимальное решение:

JS
Скопировать код
// Исчезновение прелоадера с минимальным временем показа
const MIN_LOADING_TIME = 800; // миллисекунды
const startTime = new Date().getTime();

window.addEventListener('load', function() {
const endTime = new Date().getTime();
const loadTime = endTime – startTime;
const remainingTime = Math.max(0, MIN_LOADING_TIME – loadTime);

setTimeout(function() {
const preloader = document.querySelector('.preloader');
preloader.classList.add('preloader-hidden');
}, remainingTime);
});

Этот код гарантирует, что прелоадер будет показан минимум 800 мс, даже если страница загрузится быстрее, что предотвратит "мерцание".

2. Прогрессивная загрузка контента

Современный подход — показывать контент постепенно, по мере его загрузки:

JS
Скопировать код
document.addEventListener('DOMContentLoaded', function() {
// Показываем основную структуру страницы
document.querySelector('main').classList.remove('hidden');

// Скрываем прелоадер для первого экрана
document.querySelector('.preloader').classList.add('preloader-minimized');

// После полной загрузки скрываем прелоадер полностью
window.addEventListener('load', function() {
document.querySelector('.preloader').classList.add('preloader-hidden');
// Показываем отложенный контент
document.querySelectorAll('.lazy-content').forEach(function(el) {
el.classList.remove('hidden');
});
});
});

3. Условный показ прелоадера

Оптимальный UX — показывать прелоадер только если загрузка действительно медленная:

JS
Скопировать код
// Показываем прелоадер только если загрузка занимает больше 300 мс
let preloaderTimeout = setTimeout(function() {
document.querySelector('.preloader').style.display = 'flex';
}, 300);

window.addEventListener('load', function() {
clearTimeout(preloaderTimeout);
document.querySelector('.preloader').style.display = 'none';
});

4. Ключевые метрики для оптимизации прелоадера:

  • Perceived Loading Time — субъективное время загрузки в восприятии пользователя
  • Time to Interactive (TTI) — время до возможности взаимодействия с сайтом
  • Bounce Rate при загрузке — процент пользователей, покидающих сайт во время загрузки
  • CPU/Memory Overhead — дополнительная нагрузка на устройство от анимации

5. Персонализация прелоадера

Для максимального улучшения UX можно адаптировать прелоадер под разные условия:

  • Разные стили для разных разделов сайта
  • Адаптация под устройство пользователя (упрощенная анимация для слабых устройств)
  • Персонализированные сообщения ("Подбираем товары специально для вас")
  • A/B-тестирование разных типов прелоадеров

Используйте инструменты аналитики, чтобы отслеживать, как внедрение прелоадера влияет на ключевые метрики вашего сайта. Идеальный прелоадер должен снижать показатель отказов без существенного увеличения времени до взаимодействия с сайтом.

Прелоадеры — это не просто эстетический элемент, а мощный инструмент улучшения пользовательского опыта. Правильно реализованный индикатор загрузки способен превратить потенциально фрустрирующий момент ожидания в контролируемый, предсказуемый процесс. Пять рассмотренных способов позволяют подобрать оптимальное решение для любого проекта — от минималистичного CSS-спиннера до полнофункциональных библиотек с автоматическим отслеживанием прогресса. Применяя эти техники, вы не только удерживаете внимание пользователей, но и создаете впечатление более отзывчивого интерфейса, даже если фактическое время загрузки остается прежним. В веб-разработке, как и в жизни, восприятие иногда важнее реальности.

Загрузка...