Tabs

コンテンツを複数のタブで切り替えて表示するコンポーネント。関連する情報をカテゴリ別に整理する際に使用します。

Basic

jui-tabs の最も基本的な使用例です。

基本情報コンテンツ。名前やメールアドレスの設定。
セキュリティ設定コンテンツ。パスワード変更や2要素認証。
通知設定コンテンツ。(無効化されています)

Variants

variant プロパティを使用してタブトリガーのビジュアルスタイルを変更できます(solid / bordered / underlined / light)。

Solid (デフォルト)

Solid タブコンテンツ 1
Solid タブコンテンツ 2

Bordered

Bordered タブコンテンツ 1
Bordered タブコンテンツ 2

Underlined

Underlined タブコンテンツ 1
Underlined タブコンテンツ 2

Light

Light タブコンテンツ 1
Light タブコンテンツ 2

Colors

color プロパティを使用してアクティブなタブインジケーターの色(テーマ)を変更できます(brand / success / warning / danger)。

Brand

Brand カラーコンテンツ 1
Brand カラーコンテンツ 2

Success

Success カラーコンテンツ 1
Success カラーコンテンツ 2

Warning

Warning カラーコンテンツ 1
Warning カラーコンテンツ 2

Danger

Danger カラーコンテンツ 1
Danger カラーコンテンツ 2

Sizes

size プロパティでタブトリガーの大きさを調整できます(sm / md / lg)。

Small (sm)

Small タブコンテンツ 1
Small タブコンテンツ 2

Medium (md - デフォルト)

Medium タブコンテンツ 1
Medium タブコンテンツ 2

Large (lg)

Large タブコンテンツ 1
Large タブコンテンツ 2

Full Width

full-width プロパティを有効にすると、タブリスト内のトリガーボタンが均等幅に引き伸ばされます。

Full Width タブコンテンツ 1
Full Width タブコンテンツ 2
Full Width タブコンテンツ 3

関連コンポーネント

アクセシビリティ

  • WAI-ARIA:
    • タブリストは role="tablist" として構成され、各タブは role="tab"、各コンテンツパネルは role="tabpanel" として正しく構成されます。
    • 現在アクティブなタブトリガーには aria-selected="true" が動的に設定され、非アクティブなものは aria-selected="false" となります。
    • 各タブトリガーと対応するタブパネルは、aria-controls および aria-labelledby を用いて一意の ID で紐付けられます。
  • キーボードナビゲーション:
    • Tab キーで現在のアクティブなタブにフォーカスを移動できます。
    • フォーカスがタブリスト内にある時、ArrowRight / ArrowDown キーで次のタブ、ArrowLeft / ArrowUp キーで前のタブにフォーカスとアクティブ状態を移動させます(ループ移動対応)。
    • Home キーで最初のタブ、End キーで最後のタブにフォーカスを移動します。
    • 無効化状態(disabled)のタブは、キーボードによるフォーカス移動から自動的にスキップされます。

CSS カスタムプロパティ

このコンポーネント固有のカスタムプロパティはありません。グローバルのデザイントークン(--jui-color-brand, --jui-color-surface, --jui-radius-md, --jui-spacing-1 等)を参照して描画されます。

ブラウザ対応

このコンポーネントが使用しているブラウザ機能と対応状況です。

機能用途ChromeFirefoxSafariステータス
ResizeObserverタブリスト幅に応じたカーソルの自動位置計算76+69+13.1+Baseline 2020
::slotted()スロットされたタブパネルのスタイリング50+63+10+Baseline 2020
:focus-visibleキーボード操作時のフォーカスリング制御86+85+15.4+Baseline 2022

💡 すべての機能が主要ブラウザで広く対応済みです。

Baseline 情報

機能Baseline 達成Widely Available 予定
ResizeObserver2020年2023年後半 ✅
::slotted()2020年2023年後半 ✅
:focus-visible2022年2024年後半 ✅

プロパティ

コンポーネントが受け付ける属性(Props)の一覧と詳細仕様です。

PropertyAttributeDescriptionTypeDefault
activeTabactive-tabアクティブタブの valuestring''
ariaLabelaria-labelタブリストのアクセシビリティラベル(i18n対応)string'Tabs'
colorcolorアクティブカラー"brand" | "danger" | "success" | "warning"'brand'
fullWidthfull-widthタブ均等幅booleanfalse
sizesizeタブサイズ"lg" | "md" | "sm"'md'
variantvariantスタイルバリアント(HeroUI 準拠)"bordered" | "light" | "solid" | "underlined"'solid'

イベント

コンポーネントから発火するカスタムイベントの一覧です。

EventDescriptionType
juiTabChangeタブ切り替え時に発火CustomEvent<{ value: string; }>

スロット

コンポーネント内に子要素を挿入するためのスロット一覧です。

SlotDescription
要素を配置(デフォルトスロット)

シャドウパーツ

CSSから直接スタイリング可能な内部要素(Parts)の一覧です。

PartDescription
"cursor"アクティブインジケーター(カーソル)
"tab"各タブトリガー要素
"tablist"タブリストコンテナ

Built with StencilJS