コンテンツにスキップ

ステッパー

hc-stepper はマルチステップフローの進行を表示します。JavaScript を 一切同梱しません: サーバがステップのたびにインジケーター全体 — マーカーの内容(ステップ番号、完了したら )を含む — を描画するため、 すべての状態変化はマークアップとして届きます。インジケーターは表示 し、ナビゲーションはステップのフォームの仕事です (マルチステップフォームレシピを 参照)。

別名: ウィザードステップ、進行ステップ。

  1. Account (completed)
  2. Profile
  3. Review
状態セレクタ効果
現在[aria-current="step"]アクセントのマーカー(data-color に追従)、強調されたラベル。
完了[data-state="complete"]ティントのマーカー。サーバがマーカー内容として を描画。
未到達(属性なし)ミュートのマーカーとラベル。

マーカーの内容はサーバが描画します。 保留中のステップには番号、 完了したものには — CSS content の小細工も、クライアントの変更も ありません。完了したラベルには視覚的に隠した (completed) の接尾辞を 足して状態が読み上げられるようにします。現在のステップは aria-current="step" がカバーします。

フローが再訪を許すなら、完了ステップの内容をそのステップ URL への リンクとして描画してください — ステッパーはそれを控えめにスタイル します(ホバー / フォーカスで下線)。これはステップごとのサーバの 選択です。インジケーターがナビゲーションを発明することはありません。 カラムレイアウトを保つため、マーカーはリンクの外に置いてください:

  1. Account (completed)
  2. Profile
  3. Review

data-size="sm" は密なレイアウト向けにマーカーを縮めます。水平のみ — 縦の向きは当面の意図的な非目標です。

  1. Account (completed)
  2. Profile
  3. Review

サーバはステップのたびにインジケーター全体を再描画します: ステップの フォームのレスポンス (マルチステップフォームレシピを 参照)が、aria-current を移した <ol> をそのまま含めるだけです。 ステップ 1 の完了後、サーバはこう返します:

<ol class="hc-stepper">
<li class="hc-stepper__step" data-state="complete">
<span class="hc-stepper__marker" aria-hidden="true"></span>
<span class="hc-stepper__label">Account
<span class="hc-sr-only">(completed)</span></span>
</li>
<li class="hc-stepper__step" aria-current="step">
<span class="hc-stepper__marker" aria-hidden="true">2</span>
<span class="hc-stepper__label">Profile</span>
</li>
<!-- …remaining steps unchanged (upcoming) -->
</ol>

クライアントの変更はありません: マーカーの内容( / 2)、 data-statearia-current のすべてがマークアップとして届きます。

  • 順序つきリストが正しい骨格です:「リスト、3 項目」+ aria-current="step" が標準のイディオムです。
  • マーカーは aria-hidden(位置の装飾的な複製)です。意味を運ぶのは ラベルのテキスト + sr-only の接尾辞です。
  • RTL は無料で機能します(コネクタを含め、全体が論理プロパティ)。

component トークン(component.tokens.json)— semantic 参照なので、 テーマ、アクセント、ダークモードが自動で適用されます:

トークンパス用途
stepper.marker-sizeマーカーの直径(data-size="sm" が上書き)。
stepper.marker-bg / marker-fg未到達ステップのマーカー。
stepper.current-bg / current-fg現在ステップのマーカー(data-color に追従)。
stepper.complete-bg / complete-fg完了ステップのマーカーのティント。
stepper.connectorステップ間のコネクタ線。
stepper.labelラベルの色。
stepper.gapマーカーとラベルの間隔。
生成される CSS 変数を表示
--hc-stepper-marker-size | -marker-bg | -marker-fg
--hc-stepper-current-bg | -current-fg
--hc-stepper-complete-bg | -complete-fg
--hc-stepper-connector | -label | -gap

レシピでの利用: マルチステップフォーム