プログレス
hc-progress は標準の <progress> 要素に適用します。ネイティブの
要素は ARIA の role="progressbar" セマンティクスと
value / max の属性ペアを保ちます。appearance: none とベンダー別
疑似要素で置き換わるのは見た目のクロームだけです。
別名: プログレスバー、進捗バー。
確定(determinate)
Section titled “確定(determinate)”value と(任意で)max を設定します。パーセンテージはブラウザが
自動計算します。
<progress class="hc-progress" value="40" max="100" aria-label="Upload progress"></progress>
<progress class="hc-progress" value="80" max="100" aria-label="Validation progress"></progress>value が変わると塗りは滑らかにトランジションします — htmx の
スワップでも JS の更新でも。
不確定(indeterminate)
Section titled “不確定(indeterminate)”「所要時間が不明」の状態には value を省きます。ミュートの
グラデーションが一定のリズムでトラックを横切ります。
<progress class="hc-progress" aria-label="Loading"></progress>スライドアニメーションは prefers-reduced-motion: reduce を尊重
します — ユーザーが動きをオプトアウトしていれば、トラックは代わりに
静的な中央寄せのグラデーションを表示します。
data-variant は、デフォルト以外の塗り色として success、
warning、error を受け付けます。
<progress class="hc-progress" value="60" max="100" aria-label="Default"></progress><progress class="hc-progress" value="60" max="100" data-variant="success" aria-label="Success"></progress><progress class="hc-progress" value="60" max="100" data-variant="warning" aria-label="Warning"></progress><progress class="hc-progress" value="60" max="100" data-variant="error" aria-label="Error"></progress>data-size は sm、md(デフォルト)、lg を受け付けます。
<progress class="hc-progress" value="50" max="100" data-size="sm" aria-label="Small"></progress><progress class="hc-progress" value="50" max="100" aria-label="Default"></progress><progress class="hc-progress" value="50" max="100" data-size="lg" aria-label="Large"></progress>htmx での利用
Section titled “htmx での利用”<progress> は普通の DOM ノードです — htmx は他の要素と同様に
スワップできます。ポーリングや SSE のパターンと組み合わせて、サーバ側
の進捗を表示します:
<progress class="hc-progress" value="0" max="100" aria-label="Importing" data-hx-get="/imports/42/progress" data-hx-trigger="every 500ms" data-hx-swap="outerHTML"></progress>サーバは更新済みの
<progress class="hc-progress" value="N" max="100"> を返し、塗りが
前の値から新しい値へアニメーションします。
アクセシビリティ
Section titled “アクセシビリティ”- 要素には常にアクセシブルな名前を与えてください —
aria-labelか、 包んでいる<label for>要素で。なければスクリーンリーダーは文脈 なしに「プログレスバー」と読み上げます。 - パーセンテージは
valueとmaxが運びます。aria-valuenow/aria-valuemaxを別途設定する必要はありません。 ブラウザが属性をアクセシビリティツリーへ自動マップします。 - 長時間(数秒以上)のタスクでは、定期的に更新されるステータス テキストとプログレスバーを組み合わせてください。素のバー単体は 解釈しづらいものです。
- 不確定のアニメーションは
prefers-reduced-motion: reduceの ユーザーに対して自己抑制します。
テーマ用トークン
Section titled “テーマ用トークン”component トークン(component.tokens.json):
| トークンパス | 用途 |
|---|---|
progress.height | トラックの高さ。 |
progress.radius | トラックの角丸。 |
progress.bg | トラックの背景。 |
progress.fill | デフォルトの塗り色(action.primary)。 |
progress.success-fill / warning-fill / error-fill | バリアントの塗り。 |
progress.transition-duration | value 変更時の塗りアニメーション。 |
progress.indeterminate-duration | value なしのときのスライド周期。 |
progress.sm.height / lg.height | サイズバリアント。 |
CSS 変数
Section titled “CSS 変数”生成される CSS 変数を表示
--hc-progress-height | -radius | -bg | -fill--hc-progress-success-fill | -warning-fill | -error-fill--hc-progress-transition-duration | -indeterminate-duration--hc-progress-sm-height | -lg-height- スピナー — 所要時間が 短すぎるか不明すぎてバーに値しないとき。
- file-upload レシピ —
実際のアップロード進捗でこのバーを駆動します(
installUploadProgress())。 - アラート — 「インポート中… 60%」のステータス行でプログレスバーとよく組み合い ます。
レシピでの利用: ファイルアップロード