TabContent в библиотеке Carbon Components Svelte представляет собой компонент для организации и отображения содержимого в рамках отдельных вкладок. Его основная задача — разделение контента на логические блоки, которые отображаются по мере выбора соответствующей вкладки, обеспечивая удобную навигацию и структурированное представление информации.
Компонент TabContent работает в связке с
Tabs и Tab. Каждый Tab отвечает
за заголовок вкладки, а TabContent — за содержимое. Связь
между вкладкой и её контентом обеспечивается через свойство
id или индекс.
Пример базовой структуры:
<Tabs>
<Tab label="Вкладка 1" />
<Tab label="Вкладка 2" />
<TabContent for="0">
<p>Содержимое первой вкладки.</p>
</TabContent>
<TabContent for="1">
<p>Содержимое второй вкладки.</p>
</TabContent>
</Tabs>
Ключевые моменты:
for у TabContent должен совпадать
с индексом или id соответствующего Tab.Для динамического управления состоянием активной вкладки используется
свойство active у Tabs или программное
управление через привязку переменной:
<script>
import { Tabs, Tab, TabContent } from 'carbon-components-svelte';
let activeTab = 0;
</script>
<Tabs bind:active={activeTab}>
<Tab label="Первая" />
<Tab label="Вторая" />
<TabContent for="0">
<p>Контент первой вкладки.</p>
</TabContent>
<TabContent for="1">
<p>Контент второй вкладки.</p>
</TabContent>
</Tabs>
<button on:click={() => activeTab = 1}>Перейти ко второй вкладке</button>
Особенности привязки:
bind:active позволяет синхронизировать активную вкладку
с переменной, что открывает возможность внешнего управления
вкладками.activeTab автоматически
переключает контент без перезагрузки страницы.Иногда важно не загружать весь контент сразу, особенно если вкладки
содержат тяжёлые компоненты или графику. TabContent
поддерживает ленивую загрузку через условные блоки Svelte:
<TabContent for="0">
{#if activeTab === 0}
<HeavyComponent />
{/if}
</TabContent>
Преимущества ленивой загрузки:
TabContent наследует стили от Carbon Design System.
Возможна кастомизация через:
--cds-*), применяемые к корневым
элементам.bx--tab-content для добавления собственных
стилей.Пример кастомизации:
<TabContent for="0" class="custom-tab-content">
<p>Контент с дополнительными отступами и фоном.</p>
</TabContent>
<style>
.custom-tab-content {
padding: 20px;
background-color: #f4f4f4;
}
</style>
Для вкладок с формами, таблицами или интерактивными компонентами важно учитывать:
transition:fade) для плавного появления
содержимого.Пример с анимацией:
<TabContent for="0" transition:fade>
<p>Появление с плавным эффектом.</p>
</TabContent>
TabContent.active для
синхронизации состояния вкладок с логикой приложения.Этот подход обеспечивает эффективное управление вкладками, упрощает поддержку кода и интеграцию с динамическими данными, полностью раскрывая возможности Carbon Components Svelte для создания интерактивных интерфейсов.