コンテンツにスキップ

テーブル

hc-table は標準の <table> に適用するクラスです。支援技術が 読み上げられるよう、正しい <thead> / <tbody> / <th scope="col"> / <td> の構造を使ってください。

NameStatusActions
Order #123Active
Order #124Pending
Order #125Draft

data-density="compact" は、データ密度の高いリスト向けに縦の パディングを減らします。

Default
NameStatus
Order #123Active
Order #124Pending
Order #125Draft
data-density=“compact”
NameStatus
Order #123Active
Order #124Pending
Order #125Draft

セルはデフォルトで数字を等幅数字 (font-variant-numeric: tabular-nums)でレンダリングするため、 桁の並び — 件数・金額・タイムスタンプ — は列方向に垂直に揃います。 このプロパティは数字グリフにしか影響せず、テキストセルは不変です。

右揃えは列ごとの意味論なので、宣言的な opt-in です: セルまたは ヘッダーセルの data-numeric が末尾揃えにします(text-align: end — 論理値なので RTL では自動で反転)。

ItemQtyAmount
Widget1,1149,110.25
Gadget98101.09
Gizmo71,987.50

サーバーがルールを評価し、その結果を data-tone="info | success | warning | error" としてセル(td/th) または行全体(tr)に描画します。スタイルシートは共有のセマンティック ステータスカラーでティントします(ダークテーマ対応)。色だけに頼らず、 値やテキストのマーカーをセルに残してください:

<tr>
<td>Legacy sync</td>
<td data-tone="error">Failed</td>
</tr>

data-variant="kv" はテーブルを詳細ビュー向けの 2 列の定義リストに 変えます — キーは固定インラインサイズの行ヘッダーでミュートの テキスト、値は本文のスタイルのまま、行のホバーハイライトはオフ (操作するものがないため)です:

Realm idlocal
Display nameLocal development
Created2026-06-01

キー列の幅は --hc-table-kv-key-width(デフォルト 10rem)で 上書きします。キーには <th scope="row"> を使ってください — それが この変種のスタイル対象で、ペアを読み上げ可能に保ちます。

データテーブルは列のコンテンツ幅より縮められないため、狭い画面の広い テーブルは放っておくとページ全体を横に押し広げます。 .hc-table-scroll で包んで、オーバーフローをスクロール可能な帯に 閉じ込めてください。

帯はスクロールするため、キーボードで到達可能でなければなりません — ラッパーをフォーカス可能でラベルつきの領域(role="region"aria-labeltabindex="0")にします:

<div class="hc-table-scroll" role="region" aria-label="Orders" tabindex="0">
<table class="hc-table">
</table>
</div>

広いビューポートではラッパーは見えません。テーブルが幅を超えたとき だけスクロールします。

インラインの行更新には、<tr> 自体をスワップします。

<tr id="item-123">
<td>Order #123</td>
<td><span class="hc-badge" data-variant="success">Active</span></td>
<td>
<button
class="hc-button"
type="button"
data-variant="error"
data-hc-confirm="Delete this item?"
data-hx-delete="/items/123"
data-hx-trigger="hc:confirmed"
data-hx-target="closest tr"
data-hx-swap="outerHTML">
Delete
</button>
</td>
</tr>

これは計画 §24 のまさにそのパターンです。 confirm-action レシピを 参照。

  • 列ヘッダーには常に <thead><th scope="col"> を用意して ください。行に行ヘッダーがあるときは、最初のセルに <th scope="row"> を使います。
  • セル内のアクションボタンには説明的なラベルを — aria-label を 含まない限り、アイコンのみのボタンは避けてください。
  • 長いテーブルのレスポンシブ対応で、<table><thead><tbody>display: block を適用しないでください。 スクリーンリーダーのセマンティクスが壊れます。代わりにテーブルを 横スクロール可能なコンテナで包みます。
トークンパス用途
table.borderセルの区切り線の色。
table.fg本文テキストの色。
table.font-size本文のフォントサイズ。
table.header-bgヘッダー行の背景。
table.header-fgヘッダーテキストの色。
table.header-weightヘッダーのフォントウェイト。
table.row-hover-bg行ホバーの背景。
table.cell-padding-xセルのインラインパディング。
table.cell-padding-yセルのブロックパディング。
table.kv-key-widthキー列の幅(data-variant="kv")。
table.kv-key-fgキーテキストの色(data-variant="kv")。
生成される CSS 変数を表示
--hc-table-border | -fg | -font-size
--hc-table-header-bg | -header-fg | -header-weight
--hc-table-row-hover-bg
--hc-table-cell-padding-x | -cell-padding-y
--hc-table-kv-key-width | -kv-key-fg
  • データグリッド — テーブルの上に ソート・行選択・キーボードナビゲーションが必要なとき。
  • バッジ — セル内の ステータスインジケーター。
  • ステータスカラー — ステータス色のセルテキストと行ハイライト(data-fill)のための .hc-status ユーティリティ。テーマ対応。
  • ボタン — 行のアクション。

レシピでの利用: チャート