Card — это универсальный компонент интерфейса, который используется для группировки информации в визуально отделённый блок. В SvelteKit UI библиотеках Card реализуется как комбинация HTML-структуры, стилей и реактивных свойств, что позволяет создавать интерактивные и адаптивные интерфейсы.
Типичная структура Card включает следующие элементы:
<div>
с классом card, который задаёт границы, тень и
отступы.<h2> или <h3>, может содержать
иконки или кнопки действий.Пример базовой разметки в Svelte:
<script>
export let title = "Заголовок карточки";
export let content = "Основное содержание карточки";
export let footer = "Дополнительная информация";
</script>
<div class="card">
<div class="card-header">{title}</div>
<div class="card-content">{content}</div>
<div class="card-footer">{footer}</div>
</div>
Card в UI библиотеках SvelteKit обычно поддерживает варианты и темы:
Пример использования пропсов для вариантов:
<Card variant="outlined" color="primary">
<div slot="header">Заголовок</div>
<div slot="content">Текст содержимого</div>
<div slot="footer">Подвал</div>
</Card>
Карточки должны корректно отображаться на разных устройствах:
Пример реактивного изменения цвета карточки:
<script>
import { onMount } from 'svelte';
let status = "normal";
function toggleStatus() {
status = status === "normal" ? "highlighted" : "normal";
}
</script>
<Card color={status === "highlighted" ? "success" : "default"}>
<div slot="header">Статус: {status}</div>
<button on:click={toggleStatus}>Сменить статус</button>
</Card>
Card может содержать интерактивные элементы: кнопки, ссылки, выпадающие меню. В SvelteKit это реализуется через слоты и дочерние компоненты, а также через события:
on:click на карточке или на отдельных элементах.Card часто используется вместе с:
Пример комбинированной карточки:
<Card variant="elevated">
<div slot="header">
<Avatar src="/user.jpg" alt="Пользователь"/>
Профиль пользователя
</div>
<div slot="content">
<p>Описание пользователя или продукта.</p>
<List items={['Пункт 1', 'Пункт 2', 'Пункт 3']}/>
</div>
<div slot="footer">
<Button on:click={() => alert('Подробнее')}>Подробнее</Button>
</div>
</Card>
aria-label и
другие атрибуты для экранных читалок.Карточки остаются одним из наиболее гибких компонентов интерфейса в SvelteKit UI библиотеках, позволяя создавать как простые блоки информации, так и сложные интерактивные панели.