<progress>要素
Technical Summary
progress要素は、タスクの完了進捗を表します。完了量と最大量が分かる確定状態、または進捗はあるが残量が分からない不定状態を持ちます。
value属性があれば確定状態、なければ不定状態です。progressはタスク完了を表す要素であり、ディスク使用率などの測定値にはmeter、計算結果にはoutputを使います。
Definition / Categories
| 項目 | 定義 |
|---|---|
| 意味 | タスクの完了進捗 |
| Categories | Flow content、Phrasing content、Labelable、Palpable |
| Context | Phrasing contentが期待される場所 |
| Content model | Phrasing content。ただし子孫にprogress要素を置かない |
| Tag omission | 開始タグ・終了タグとも省略不可 |
| Content attributes | グローバル属性、value、max |
| DOM interface | HTMLProgressElement |
確定状態と不定状態
確定状態では、現在値と最大値から完了割合を計算できます。不定状態では、処理が進行中であることは分かるものの、完了までにどれだけ残っているかは分かりません。
<label for="determinate-progress">アップロード</label>
<progress id="determinate-progress" max="100" value="65">65%</progress>
<label for="indeterminate-progress">サーバーの応答を待機中</label>
<progress id="indeterminate-progress">処理中</progress>
value="0"は確定状態の現在値0です。value属性を省略した状態とは異なります。
value・maxの解決
max属性はタスク全体の量を表します。指定がない場合の最大値は1です。値の単位は仕様で固定されていないため、アプリケーション内で一貫した単位を選びます。
maxは有効な浮動小数点数で、0より大きい必要があります。無効または0以下の場合は最大値1として扱われます。valueがある場合、現在値は有効な浮動小数点数として解釈されます。無効な値や0以下の値は現在値0として扱われます。- 現在値が最大値を超える場合、進捗の現在値は最大値に制限されます。
valueがない場合は不定状態で、positionは-1を返します。
progressにはmin属性はありません。常に下限は0であり、範囲内の測定値に下限・上限・低い値・高い値の意味を持たせるmeterとは処理モデルが異なります。
フォールバックテキストとラベル
progressの子孫テキストは、古いユーザーエージェント向けに現在値や最大値を伝えるフォールバックとして記述できます。ただし、その文字列だけを要素の名前として扱うのではなく、何の進捗かをlabelや適切なARIA labelingで明示します。
<label for="file-progress">レポートのアップロード進捗</label>
<progress id="file-progress" max="100" value="70">70%</progress>
ページの一部を読み込んでいる場合は、進捗表示をaria-describedbyで説明対象の領域と関係付け、更新中の領域にaria-busyを使う設計も別途検討します。要素の意味、ブラウザーのAccessibility Tree、支援技術の通知は同一視しません。
DOM Interface
| API | 意味 | 境界 |
|---|---|---|
value | 現在の進捗値 | 不定状態ではgetterが0を返し、setterで確定状態へ変化する場合がある |
max | 最大値。既定値は1 | 0以下や不正な値は既定の最大値として解決される |
position | 確定状態では現在値 / 最大値。不定状態では-1 | 進捗の割合を読むためのreadonly surface |
labels | 関連するlabelのNodeList | labelable要素としての名前付けを確認する入口 |
Fact / Evidence(主張 / 根拠)
仕様上の進捗モデル、属性の解決、content model、DOM API、アクセシビリティマッピングを、主張・条件・根拠位置に分けて記録します。ブラウザーの実測は下のImplementation Evidenceに分離します。
| 種別 | Fact / 主張 | 条件・範囲 | 状態 | 根拠 |
|---|---|---|---|---|
| SPEC | progressはタスクの完了進捗を表します。 | 確定状態では0から最大値までの完了量、不定状態では残量不明の進行中タスク。 | 確認済み | HTML Standard: the progress element |
| SPEC | value属性があるかどうかで、確定状態と不定状態が区別されます。 | valueなしは不定状態、valueありは現在値と最大値を持つ確定状態。 | 確認済み | HTML Standard: determinate and indeterminate progress |
| SPEC | maxの既定値は1で、valueは0以上かつ最大値以下の現在値として解決されます。 | 無効な浮動小数点値、0以下のmax、最大値を超えるvalueの解決。 | 確認済み | HTML Standard: value and max processing |
| SPEC | progressはFlow、Phrasing、Labelable、Palpable contentに属します。 | Phrasing contentが期待される場所で使用し、子孫にprogressを置かない。 | 確認済み | HTML Standard: categories and content model |
| SPEC | HTMLProgressElementはvalue、max、readonlyのposition、labelsを公開します。 | 不定状態のposition、IDL属性とcontent attributeの反映を含むDOM API。 | 確認済み | HTML Standard: HTMLProgressElement |
| AAM | progressはprogressbar roleに対応し、確定状態では最大値・最小値0・現在値をアクセシビリティAPIへ反映します。 | HTML-AAMのelement role mapping。実際のブラウザー・platform API・支援技術の結果は別途観測する。 | 仕様確認済み | HTML-AAM: progress |
Evidence
- HTML Standard: The progress element — meaning、categories、attributes、確定・不定状態、value/max処理、DOM interface
- HTML Accessibility API Mappings: progress — progressbar role、確定状態のvalue properties、label mapping
- Web Platform Tests: HTML forms — progress elementの仕様テストを特定する入口
Implementation Evidence
仕様上の主張とは別に、ブラウザー実装、WPT、アクセシビリティツリーの観測を記録します。専用のprogress-v1 fixtureはまだ実行していないため、未実行項目を確認済みとは扱いません。
Fixture候補: progress-v1では、確定・不定状態の切替、valueとmaxの境界値・不正値、position、labels、fallback text、Accessibility Treeのvalue propertiesを再現する。
| 種別 | 再現確認の範囲 | 記録する条件 | 状態 |
|---|---|---|---|
| IMPL | 確定・不定状態、value/maxの境界、属性・IDL反映、position、labels、fallback text | ブラウザー名・バージョン、OS、確認日、progress-v1 fixture、各項目の結果を登録する | Pending / 未実施 |
| WPT | progress element、value/max parsing、indeterminate、DOM APIに対応するテスト | 選定ファイル、実行環境、pass/fail、未実行理由を登録する | Pending / 未実施 |
| AAM | progressbar role、labelによるaccessible name、確定状態のmin/max/now、不定状態の公開 | ブラウザーAccessibility Tree、platform API、支援技術、他ブラウザーの観測を分けて登録する | Pending / 未実施 |
単一環境でのブラウザー観測を、すべてのブラウザー・platform API・支援技術に共通する結果として登録しません。
Coverage / Open Issues
- 確認済み意味、Categories、Context、Content model、tag omission、content attributes
- 確認済み確定・不定状態、
value・maxの仕様上の解決、meter・outputとの意味の境界 - 確認済み
HTMLProgressElementの主要APIとHTML-AAMのprogressbar mappingの入口 - 未完了Chrome、Firefox、Safariでの属性・IDL・表示・確定/不定切替の実装比較
- 未完了WPTの個別テスト実行結果、境界値・不正値・動的変更のブラウザー差
- 未完了HTML-AAMの全mapping、platform API、支援技術の読み上げ、動的更新と
aria-busy/aria-describedbyの相互作用
このページは初期Coverageです。仕様上の入口と根拠を整理したものであり、すべてのブラウザー、platform API、支援技術で同じ結果になることや、progress要素全体の検証完了を主張しません。
Related surface
初心者向けの進捗表示、確定・不定状態、meterやoutputとの違いはYugienのprogress要素ページを参照してください。ラベルとの関係はlabel要素、計算結果との違いはoutput要素でも確認できます。