コンテンツにスキップ

スピナー

hc-spinner は、「ビジー」/ 保留状態のための純 CSS の回転リング です。JavaScript はありません: CSS でアニメーションし、デフォルトで currentColor に従い、リクエスト駆動の表示のために htmx の .htmx-indicator クラスと組み合います。

別名: ローダー、ローディングインジケーター。

スピナーはインジケーターの色を周囲のテキスト(currentColor)から 継承するため、ボタン、バッジ、本文の中に自然に収まります。

data-size="sm" または data-size="lg" を設定します。省略すると デフォルトの medium です。

デフォルトでインジケーターは currentColor を使います。 data-variant はそれを semantic のアクセントに差し替えます — スピナーが色つきテキストの中にないときに便利です。

バリアントインジケーターの色
省略currentColor(継承)。
primaryアクセント / primary アクション。
success成功の緑。
warning警告のアンバー。
errorエラーの赤。

htmx-indicator クラスを足すと、htmx が駆動するリクエストの実行中 だけスピナーがフェードインします — 自前の JS は不要。ネットワークの 所有者はボタンのままです。

<button class="hc-button" data-hx-post="/save" data-hx-disabled-elt="this">
Save
<span class="hc-spinner htmx-indicator" aria-hidden="true"></span>
</button>

ここでのスピナーは装飾(aria-hidden="true")です。無効化された ボタンとスワップされるレスポンスがすでに進行を伝えているからです。 スピナーが唯一のシグナルであるときは、代わりにステータスの名前を 与えてください — 下記を参照。

スピナーは視覚表現です。「ビジー」の意味はテキストとして支援技術へ 届かなければなりません。2 つのパターン:

  1. スピナー自身に名前を付ける — アクセシブルな名前つきのライブ 領域にします:

    <span class="hc-spinner" role="status" aria-label="Loading"></span>
  2. 視覚的に隠したラベルで包む — スピナーは装飾のままにして、 テキストを兄弟に置きます。より豊かな文言が欲しいときはこちら:

    <span role="status">
    <span class="hc-spinner" aria-hidden="true"></span>
    <span class="hc-sr-only">Loading results…</span>
    </span>
  • Reduced motion: prefers-reduced-motion: reduce の下では回転は 遅くなりますが止まりません — 作業が進行中であることを伝え続け なければならないからです。アクセシブルな名前は動きにかかわらず 読み上げ続けるため、ステータスがアニメーションだけで伝えられる ことはありません。
  • 名前のない空の role="status" を残さないでください。無名のライブ 領域は何も読み上げません。
トークンパス用途
spinner.sizeデフォルト(medium)の直径。
spinner.sm-size / lg-sizedata-size の直径。
spinner.border-widthリングの太さ。
spinner.track-color薄い全周リング(テーマの border)。
spinner.indicator-color先頭の弧(デフォルト currentColor)。
spinner.duration1 回転の時間。
spinner.reduced-durationreduced motion 下の回転。
spinner.{primary,success,warning,error}-colordata-variant のインジケーター色。
生成される CSS 変数を表示
--hc-spinner-size | -sm-size | -lg-size
--hc-spinner-border-width | -track-color | -indicator-color
--hc-spinner-duration | -reduced-duration
--hc-spinner-primary-color | -success-color | -warning-color | -error-color
  • プログレス — パーセンテージが分かっている確定的な進捗に。
  • スケルトン — 読み込み中のコンテンツのプレースホルダー形状。
  • ボタン — インラインの htmx-indicator スピナーの定番ホスト。

レシピでの利用: リクエストアクション