Tag Skeleton — это компонент библиотеки Carbon Components Svelte, предназначенный для отображения визуального заглушечного состояния тегов (tags) в интерфейсе, когда данные еще не загружены. Он позволяет поддерживать единый визуальный стиль и предотвращает “скачки” элементов при асинхронной подгрузке контента.
class Позволяет добавлять
дополнительные CSS-классы для кастомизации внешнего вида. Обычно
используется для настройки размеров, отступов или интеграции с сеткой
интерфейса.
style Прямое inline-стилирование.
Может использоваться для временного изменения цвета, ширины или других
визуальных параметров скелетона без создания отдельного
CSS-класса.
size (опционально) Задает
размер компонента. Стандартные размеры:
sm — маленький тег, обычно используется в компактных
списках;md — средний тег, стандартный размер;lg — крупный тег, для особо выделенных элементов
интерфейса.Пример использования размера:
Когда необходимо отображать несколько тегов в виде
скелетонов, рекомендуется использовать цикл each в
Svelte. Это позволяет элегантно создавать набор скелетонов:
{#each Array(5) as _, index}
{/each}
В этом примере создается пять скелетонов тегов, имитирующих загрузку данных.
Компонент Tag Skeleton наследует стиль базового тега
библиотеки Carbon. Основной визуальный элемент — серый прямоугольник с
плавным градиентом для имитации эффекта “loading shimmer”. Для более
сложной анимации можно использовать CSS-псевдоклассы или подключать
@keyframes:
.skeleton-shimmer {
background: linear-gradient(90deg, #e0e0e0 25%, #f5f5f5 50%, #e0e0e0 75%);
background-size: 200% 100%;
animation: shimmer 1.5s infinite linear;
}
@keyframes shimmer {
0% {
background-position: -200% 0;
}
100% {
background-position: 200% 0;
}
}
После чего класс можно применить к скелетону:
Часто Tag Skeleton используют совместно с условной отрисовкой на основе состояния загрузки:
{#if loading}
{:else}
{#each tags as tag}
{tag}
{/each}
{/if}
loading — булева переменная, определяющая, отображать
ли скелетоны или готовые теги.--cds-ui-01, --cds-ui-02), но могут быть
изменены через кастомные классы.Для более сложного интерфейса можно комбинировать Tag Skeleton с сеткой Carbon:
{#each Array(3) as _, i}
{/each}
Такой подход позволяет создавать адаптивные скелетоны тегов, которые будут корректно отображаться на любых экранах и поддерживать отзывчивость интерфейса.