コンテンツにスキップ

メーター

hc-meter は標準の <meter> 要素に適用します — 既知の範囲内のスカラー 計測値(ディスククォータ、スコア、容量)を表し、 hc-progress(タスクの 進捗)と対をなします。ネイティブ要素は role="meter" のセマンティクスと value / min / max / low / high / optimum 属性を保ち、視覚的な クロームだけが appearance: none とベンダーごとの疑似要素で置き換え られます。

別名: ゲージ、レベル表示。

7 of 10

テキストの子(7 of 10)は <meter> を描画しないユーザーエージェント のためのフォールバックです — 意味のある内容に保ってください。

low / high / optimum は現在値の分類方法をブラウザに伝えます。 コンポーネントは 3 つの領域をステータストークンに対応づけます — data-variant は不要で、色はデータから導かれます:

領域条件カラートークン
optimum値が最良の帯にあるmeter.optimum-fill(success)
suboptimum1 帯離れているmeter.suboptimum-fill(warning)
critical2 帯離れているmeter.critical-fill(error)
42%82%97%

「高いほど良い」スケール(バッテリー、スコア)では optimummax 側に振ってください — 同じ帯が逆方向に色づきます。

data-sizesmmd(デフォルト)、lg を受け付けます。

40%40%40%

メーターとプログレスの使い分け

Section titled “メーターとプログレスの使い分け”
用途要素
完了に向かって進むタスク<progress class="hc-progress">
既知の範囲内の計測値(クォータ、スコア、負荷)<meter class="hc-meter">

<meter> に不確定状態はなく、<progress> に良し悪しの領域は ありません — この区別は支援技術のために要素がエンコードするものなので、 見た目ではなく意味で選んでください。

<meter> は通常の DOM ノードです — 他の要素と同じようにスワップ できます。例: アップロード後に再描画されるクォータのセル:

<meter class="hc-meter" id="quota" min="0" max="100"
low="70" high="90" optimum="10" value="82"
data-hx-get="/account/quota" data-hx-trigger="hc:uploaded from:body"
data-hx-swap="outerHTML">82%</meter>

この hc:uploaded は(アップロード完了側が発火する)あなたの アプリのイベントで、キットのイベントではありません — htmx の トリガーなら何でも使えます(ポーリングするクォータなら every 30s など)。領域の色はスワップ時に自動で更新されます — スクリプトではなく、 新しい value からブラウザが導出します。

  • 要素には常にアクセシブルな名前を与えてください — <label for> で 包むか aria-label を使います。要素自体は値つきのメーターとして 公開されるため、aria-valuenow のミラーリングは不要です。
  • フォールバックのテキストの子はサーバサイドで value と同期して ください — コピー & ペーストやリーダーモードが見るのもこれです。
  • 色は唯一のシグナルではありません: value / max のペアは アクセシビリティツリーにあり、目で見るラベルにも数値を載せるべき です(上のデモのように)。

component トークン(component.tokens.json):

トークンパス用途
meter.heightトラックの高さ。
meter.radiusトラックの角丸。
meter.bgトラックの背景。
meter.optimum-fill最良領域のフィル(success)。
meter.suboptimum-fill1 帯離れたフィル(warning)。
meter.critical-fill2 帯離れたフィル(error)。
meter.sm.height / lg.heightサイズバリアント。
生成される CSS 変数を表示
--hc-meter-height | -radius | -bg
--hc-meter-optimum-fill | -suboptimum-fill | -critical-fill
--hc-meter-sm-height | -lg-height