Чтение 6 минут

Анимация ожидания: индикаторы, скелетоны и прогресс


Анимация ожидания: индикаторы, скелетоны и прогресс - Студия Вебтую

Любой сайт иногда заставляет ждать: грузится каталог, отправляется форма, пересчитывается стоимость доставки, формируется документ. Полностью убрать ожидание нельзя — данные идут по сети, запросы обрабатывает база, файлы весят столько, сколько весят. Зато можно управлять тем, что человек видит в эти секунды. Одна и та же задержка переносится по-разному: пустой белый прямоугольник читается как поломка, а размеченная заглушка — как обычная загрузка. Ниже разбираем приёмы, которыми мы пользуемся в проектах, и порядок, в котором их стоит применять.

Почему пустой экран воспринимается как поломка

Человек оценивает не секунды по таймеру, а понятность происходящего. Если после нажатия ничего не изменилось, первая гипотеза — нажатие не сработало. Дальше следует повторный клик, потом третий, потом уход со страницы. Мы регулярно видим это в записях сессий: три-четыре нажатия подряд по кнопке отправки за полторы секунды, а в почте — три одинаковых заявки.

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

Три способа показать ожидание

Выбор зависит от того, сколько длится операция и знаем ли мы её объём заранее.

СпособКогда уместенЧто важно учесть
Крутящийся индикаторКороткие операции до 2-3 секунд: отправка формы, подгрузка выпадающего спискаПоявляется не мгновенно, а через 200-300 мс, иначе мигает на быстрых ответах
Скелетон, то есть серые заглушки блоковЗагрузка списков, карточек товаров, ленты материалов, таблицПовторяет реальную раскладку: количество строк, пропорции картинок, высоту карточки
Полоса прогрессаДлительные операции с известным объёмом: загрузка файла, импорт данныхПоказывает реальный прогресс, а не имитацию движения
Текстовый статусОперации дольше 10 секунд: расчёт, генерация документа, проверка по внешнему сервисуНазывает текущий шаг словами, а не процентами

Комбинировать способы можно и нужно. Например, при отправке большой формы кнопка блокируется и получает индикатор, а под ней появляется строка статуса — так человек видит и что нажатие принято, и что процесс идёт.

Чем скелетон лучше вращающегося индикатора

Скелетон показывает, что именно появится: два блока текста, картинка слева, кнопка внизу. Человек начинает считывать структуру страницы до того, как пришли данные, и субъективное время ожидания сокращается. Кроме того, место под содержимое уже занято — когда данные приходят, вёрстка не прыгает, кнопка не уезжает из-под пальца.

Скачок вёрстки — отдельная проблема, которая портит впечатление даже на быстрых сайтах. Классический случай: карточки товаров отрисовались, человек тянется к кнопке, в этот момент догрузился баннер сверху, содержимое сместилось вниз, палец попал в другую ссылку. Скелетон с правильными размерами закрывает этот сценарий, потому что резервирует высоту блока заранее.

Как мы собираем скелетон

  1. Берём реальную карточку или строку списка и снимаем с неё геометрию: отступы, высоту строк текста, пропорции изображения.
  2. Заменяем содержимое нейтральными прямоугольниками того же размера, скругления оставляем те же, что у настоящих элементов.
  3. Показываем столько заглушек, сколько элементов обычно приходит в первом экране, — не одну и не двадцать.
  4. Добавляем спокойное движение подсветки. Резкое мигание раздражает и мешает читать соседний текст.
  5. Проверяем на тёмной теме и на мобильном: серый на сером иногда просто не виден.

Отдельно проверяем поведение при повторных заходах. Если данные уже есть в кеше и приходят за 50 мс, скелетон показывать не нужно вовсе — вспышка серых блоков выглядит хуже, чем мгновенная отрисовка.

Задержка перед появлением индикатора

Небольшая пауза перед показом индикатора — приём, который экономит нервы. Если ответ приходит за 150 мс, показывать ничего не надо: человек и так воспринимает это как мгновенную реакцию. Индикатор, который успел появиться и исчезнуть, читается как дёрганье интерфейса.

Обратное правило тоже полезно: если индикатор всё-таки показан, держим его минимум 400-500 мс. Иначе на быстром соединении получается серия вспышек. Оба порога мы задаём в коде один раз и применяем ко всем состояниям загрузки на проекте, чтобы поведение было одинаковым.

Ошибки, которые встречаются чаще всего

  • Кнопка не блокируется при отправке. Человек нажимает трижды, заявка приходит трижды, менеджер звонит по одному обращению три раза.
  • При ошибке индикатор просто исчезает. Ничего не произошло, объяснения нет, повторить попытку не предлагают.
  • Полоса прогресса доходит до девяноста процентов и стоит. После такого опыта человек перестаёт верить любым индикаторам на сайте.
  • Скелетон не совпадает с реальной раскладкой: заглушек три, а карточек приходит восемь, и страница подпрыгивает.
  • Индикатор перекрывает весь экран при загрузке одного небольшого блока. Ожидание локальное, а блокируется вся страница.
  • Анимация не отключается при системной настройке уменьшения движения. Для части посетителей это вопрос самочувствия, а не вкуса.

Долгие операции: текст вместо анимации

Если операция занимает больше десяти секунд — генерация счёта, обработка большого файла, обмен с внешним сервисом, — молчаливое вращение перестаёт работать. Человеку нужно понимать, что процесс не завис. Помогает простое перечисление шагов словами: проверяем данные, формируем документ, отправляем на почту. Текущий шаг подсвечен, пройденные отмечены.

  • Называем шаги языком клиента, а не названиями внутренних сервисов.
  • Даём возможность уйти со страницы и получить результат письмом, если операция действительно долгая.
  • Сообщаем о завершении явно: строкой на странице, а не только исчезновением индикатора.
  • При ошибке пишем, на каком шаге она произошла и что делать дальше.

Что проверяем перед сдачей

Что проверяемКак проверяемПризнак проблемы
Реакция на нажатиеНажимаем кнопку отправки и смотрим на неёПервые полсекунды на экране ничего не меняется
Защита от повторной отправкиБыстро нажимаем кнопку несколько раз подрядПриходит несколько одинаковых заявок
Поведение на медленной сетиВключаем ограничение скорости в инструментах браузераСкачки вёрстки, пустые области, вспышки индикатора
Состояние ошибкиОтключаем сеть и отправляем формуИндикатор пропал, сообщения нет
Совпадение скелетона с содержимымСравниваем заглушку и загруженный блокВысота отличается, страница подпрыгивает
Уменьшение движенияВключаем системную настройку и обновляем страницуАнимация продолжает работать в полном объёме

Сначала скорость, потом оформление

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

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

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

Нужна помощь с сайтом?

Срочные ошибки исправим за 24 часа, работа от 2 500 руб./час.

Техническая поддержка и сопровождение сайта

По теме статьи

Мы это уже делали

Похожие статьи

Нужен новый сайт?

Оставьте контакты — вернёмся с вопросами по задаче и ориентиром по срокам и стоимости.

Читайте также

Разбираем задачи, с которыми к нам приходят: от структуры сайта до поддержки и продвижения.

Внимание: мошенники представляются сотрудниками Вебтую Внимание: мошенники представляются сотрудниками Вебтую Посторонние люди обращаются к рекламным агентствам и исполнителям от имени Вебтую через Telegram-аккаунты @vetaroki22010 и @WhatSua2202, заказывают работы и не 10-09-2026 Читать Работа в digital: процессы, инструменты и команда Работа в digital: процессы, инструменты и команда Цифровые проекты редко проваливаются из-за технологий: чаще мешает организация работы. Разбираем этапы, роли, постановку задач, инструменты распределённой коман 30-08-2026 Читать Реклама и аналитика: как считать заявки, а не клики Реклама и аналитика: как считать заявки, а не клики Показы и клики не отвечают на вопрос, сколько принесла реклама. Разбираем, как настроить цели, разметить источники, учесть звонки и связать заявку со сделкой, ч 30-08-2026 Читать Поддержка сайта: обновления, резервные копии и безопасность Поддержка сайта: обновления, резервные копии и безопасность Сайт без регулярного обслуживания ломается предсказуемо. Разбираем, из чего состоит поддержка: обновления, резервные копии, доступы, безопасность, выбор хостинг 30-08-2026 Читать Техническое SEO: индексация, скорость и структура сайта Техническое SEO: индексация, скорость и структура сайта Техническая часть сайта решает, попадут ли страницы в индекс и дождётся ли их посетитель. Разбираем структуру и адреса, индексацию и дубли, работу с устаревшими 30-08-2026 Читать Продвижение сайта в поиске: стратегия, семантика и ссылки Продвижение сайта в поиске: стратегия, семантика и ссылки Разбираем продвижение сайта в поиске от постановки цели до регулярной работы: как собрать и разложить семантику по страницам, что должно быть на посадочной стра 30-08-2026 Читать Тексты для сайта: как писать, чтобы читали и покупали Тексты для сайта: как писать, чтобы читали и покупали Как выбрать тему для страницы и построить текст, который просматривают глазами и дочитывают, чем заменить оценочные формулировки, как переработать существующую 30-08-2026 Читать Автоматизация бизнеса: CRM, ERP и искусственный интеллект Автоматизация бизнеса: CRM, ERP и искусственный интеллект С чего начинать автоматизацию и что автоматизировать в первую очередь, чем различаются CRM, ERP и системы документооборота, внедрять по модулям или всё сразу, г 30-08-2026 Читать Как устроена разработка: технологии, тестирование и инструменты Как устроена разработка: технологии, тестирование и инструменты Из чего состоит веб-проект, как выбирают язык, фреймворк и базу данных, зачем нужны тестирование и контроль версий, где заканчиваются возможности low-code и ген 30-08-2026 Читать Создание сайта: от технического задания до запуска Создание сайта: от технического задания до запуска Проекты срываются не из-за технологий, а из-за неясных договорённостей. Разбираем весь путь создания сайта: как сформулировать цель, что должно быть в техническ 30-08-2026 Читать
Обсудить проект