SkeletonText и SkeletonPlaceholder представляют собой ключевые компоненты для создания эффектов «скелета» при загрузке данных в приложениях, построенных с использованием Svelte и библиотеки Carbon Components. Эти компоненты позволяют визуально обозначить места, где впоследствии будут отображены реальные элементы интерфейса, создавая плавный пользовательский опыт и предотвращая резкую перестройку страницы при подгрузке контента.
SkeletonText используется для имитации текстового
контента. Он обычно применяется в местах, где необходимо показать
пользователю, что данные еще загружаются, но структура текста уже
известна.
Основные свойства:
heading (boolean) — задает, будет ли скелет имитировать
заголовок. При значении true элемент отображается шире и
выше, подчеркивая визуально важный текст.width (string | number) — ширина элемента. Можно
задавать в пикселях (px) или в процентах (%),
что позволяет подстраивать скелет под реальный контент.paragraph (boolean) — указывает, будет ли отображаться
несколько строк текста, имитируя абзац.lines (number) — количество строк текста при
использовании абзаца (paragraph).Пример использования:
<script>
import { SkeletonText } from 'carbon-components-svelte';
</script>
<SkeletonText heading={true} width="60%" />
<SkeletonText paragraph={true} lines={3} />
В этом примере создается заголовок шириной 60% и абзац из трех строк, что позволяет визуально подготовить макет до загрузки данных.
Особенности работы:
{#if}), скрывая скелет после загрузки
данных.SkeletonPlaceholder служит для имитации произвольных
блоков интерфейса, таких как изображения, карточки, кнопки или другие
визуальные элементы. Он универсален и используется там, где текстовый
скелет неприменим.
Основные свойства:
width и height (string | number) — размеры
блока. Ширина и высота могут задаваться в пикселях или процентах.circle (boolean) — формирует круглую область, полезно
для аватаров и круглых иконок.style (string) — позволяет добавлять дополнительные
CSS-свойства для кастомизации внешнего вида.Пример использования:
<script>
import { SkeletonPlaceholder } from 'carbon-components-svelte';
</script>
<SkeletonPlaceholder width="100px" height="100px" circle={true} />
<SkeletonPlaceholder width="300px" height="200px" />
Первый элемент создаст круглый скелет для аватара, второй — прямоугольный блок, например, для изображения или карточки.
Рекомендации по применению:
SkeletonText, создавая полноценные
«скелетные» интерфейсы, которые отражают структуру будущего
контента.SkeletonPlaceholder, чтобы сохранить визуальное
соответствие реальному контенту.<script>
import { SkeletonText, SkeletonPlaceholder } from 'carbon-components-svelte';
</script>
<div class="card">
<SkeletonPlaceholder width="100%" height="150px" />
<div class="card-content">
<SkeletonText heading={true} width="80%" />
<SkeletonText paragraph={true} lines={2} />
</div>
</div>
В данном примере создается карточка с изображением, заголовком и текстом, полностью имитируя структуру реального компонента. Такой подход позволяет пользователю видеть макет страницы сразу, даже если данные еще загружаются с сервера.
Стилизация и адаптивность:
--cds-skeleton-animation-duration.SkeletonText и SkeletonPlaceholder с
дополнительными стилями.Skeleton-компоненты Carbon Components Svelte значительно упрощают процесс создания плавного UX, обеспечивая визуальную предзагрузку данных и уменьшая «прыжки» элементов на странице. Их гибкость позволяет воспроизводить как текстовые, так и графические элементы интерфейса, делая пользовательский интерфейс более предсказуемым и профессиональным.