Tile — это базовый строительный блок интерфейсов в Carbon Design System, который используется для группировки контента, создания визуальной иерархии и выделения интерактивных элементов. В Svelte-библиотеке Carbon Components Tile представлен как компонент с гибкой настройкой внешнего вида, поведения и состояния.
Базовая плитка создается с помощью компонента
<Tile>:
<script>
import { Tile } from 'carbon-components-svelte';
</script>
<Tile>
Контент плитки
</Tile>
Ключевые свойства:
light – boolean, определяет светлую
версию плитки. По умолчанию плитка использует стандартную цветовую
схему.href – string, если задан, плитка
становится ссылкой (<a>).class – string, позволяет добавлять
пользовательские классы для кастомизации стилей.<Tile>
Простая информация
</Tile>
on:click или с помощью свойства
href.<Tile on:click={() => console.log('Плитка нажата')}>
Нажми на меня
</Tile>
<TileSelectable>.<script>
import { TileSelectable } from 'carbon-components-svelte';
let selected = false;
</script>
<TileSelectable bind:checked={selected}>
Выбор плитки
</TileSelectable>
checked – boolean, состояние выбора
плитки.disabled – boolean, отключает
возможность выбора.name – string, используется для
группирования плиток, как у радио-кнопок.Для организации нескольких плиток в группе применяются контейнеры
<TileGroup> и
<TileSelectable>:
<script>
import { TileGroup, TileSelectable } from 'carbon-components-svelte';
let selectedTile;
</script>
<TileGroup bind:value={selectedTile} legend="Выберите плитку">
<TileSelectable value="1">Плитка 1</TileSelectable>
<TileSelectable value="2">Плитка 2</TileSelectable>
<TileSelectable value="3">Плитка 3</TileSelectable>
</TileGroup>
legend – строка, задает подпись группы
плиток.value – текущее выбранное
значение.bind:value – двусторонняя привязка к
переменной, позволяет отслеживать выбранную плитку.Классы и стили можно использовать для изменения внешнего вида плитки:
<Tile class="custom-tile">
Пользовательский стиль
</Tile>
<style>
.custom-tile {
border: 2px solid #0f62fe;
border-radius: 12px;
padding: 20px;
transition: transform 0.2s ease;
}
.custom-tile:hover {
transform: scale(1.05);
}
</style>
Светлая версия плитки:
<Tile light>
Светлая плитка
</Tile>
Плитки поддерживают несколько визуальных состояний:
Эти состояния можно использовать как для обычных
<Tile>, так и для
<TileSelectable>, сочетая их с CSS-переходами и
классами.
Плитки часто комбинируются с кнопками, иконками и текстовыми блоками для создания интерактивных карточек:
<Tile>
<h3>Заголовок плитки</h3>
<p>Описание плитки</p>
<button on:click={() => alert('Действие выполнено')}>Действие</button>
</Tile>
Это позволяет создавать гибкие интерфейсы без нарушения принципов Carbon Design System.
TileSelectable для форм и
выбора опций, чтобы обеспечить доступность.href, чтобы
плитка могла вести на другую страницу.<TileGroup> упрощает
управление состоянием выбранной плитки.class и CSS-переходы позволяет
создавать динамичные и отзывчивые плитки без изменения исходной логики
компонента.Хотите, я продолжу статью подробным разбором Expandable Tile и примеров их использования с динамическим контентом в Svelte? Это будет логическое продолжение базовых плиток.