⚙️

AJAX с Placeholder'ом (скелетон-загрузка)

📌 Что это? Пользователь видит структуру окна мгновенно, а реальный контент подгружается в фоне. Создаётся ощущение быстрой работы.

Как это работает

Обычный AJAX

  • Пользователь видит спиннер
  • Контент загружается
  • Появляется окно с контентом
$.xpopup.open({
    type: 'ajax',
    content: '/api/data'
});
                        

AJAX с Placeholder'ом

  • Окно открывается мгновенно с заглушкой
  • AJAX-контент загружается в фоне
  • После загрузки — плавная замена
$.xpopup.open({
    type: 'ajax',
    content: '/api/data',
    placeholder: '#mySkeleton',   // ← главное отличие
    replaceAnimation: true
});
                        

Примеры использования

Диалог в мессенджере #

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

Карточка товара #

Загрузка подробной информации о товаре. Скелетон повторяет структуру конечного контента.

Сравнение: спиннер vs скелетон #

Нажмите на кнопки и сравните восприятие. Оба окна загружают один и тот же контент с искусственной задержкой 1.5 секунды.

Результат: скелетон создаёт ощущение мгновенной загрузки — пользователь видит структуру окна сразу, а контент появляется плавно.

Без анимации замены #

Если не нужна плавная замена, можно отключить анимацию опцией replaceAnimation: false. Контент заменится мгновенно.

Задержка перед заменой #

Опция replaceDelay: 1000 задаёт задержку между получением контента и его отображением. Полезно для демонстрации или синхронизации с анимациями.

Доступные опции для AJAX с placeholder'ом

Опция Тип По умолчанию Описание
placeholder string null CSS-селектор скрытого элемента-заглушки. Если указан, включается режим "сначала заглушка, потом AJAX".
replaceAnimation boolean true Плавная замена заглушки на реальный контент (fadeOut/fadeIn).
replaceDelay number 0 Задержка в миллисекундах перед заменой контента (после успешной загрузки).
clearPlaceholderAfterLoad boolean true Удалять клон placeholder'а из DOM после загрузки реального контента.

Рекомендации по созданию скелетонов

  • Повторяйте структуру — скелетон должен визуально соответствовать реальному контенту
  • Используйте CSS-анимацию (пульсация, градиент) для индикации загрузки
  • Не делайте скелетон слишком детальным — достаточно общих очертаний
  • Прячьте оригинал — элемент-заглушка должен быть скрыт (style="display:none;")
  • Тестируйте на медленных соединениях — эффект наиболее заметен при задержках 300-1500 мс
✨ Итог: Placeholder'и (скелетоны) значительно улучшают восприятие скорости загрузки. Пользователь видит интерфейс мгновенно, а данные подгружаются незаметно.