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 мс