<label>要素
Technical Summary
label要素は、ユーザーインターフェース内のform controlに対するcaptionを表します。特定のlabelableな部品とは、for属性で明示的に指定するか、labelの中に部品を置くことで関連付けます。
関連付けは表示上の文字だけの問題ではありません。labelable要素の判定、同じtree内のID解決、labelクリック時のactivation behavior、DOM API、accessible nameの計算を分けて確認する必要があります。
Definition / Categories
| 項目 | 仕様上の概要 |
|---|---|
| Categories | Flow content、phrasing content、interactive content、palpable content |
| Context | phrasing contentが期待される場所 |
| Content model | phrasing content。ただし、対象となるlabelable要素を除きlabelable要素の子孫を持たず、label要素の子孫も持たない |
| Tag omission | 開始タグ・終了タグとも省略不可 |
| Content attributes | Global attributesと、form controlを指定するfor属性 |
| DOM interface | HTMLLabelElement |
labelは任意の要素の説明を付ける汎用的な見出しではありません。対象はlabelableなフォーム部品に限られ、label自身を入れ子にしたり、複数のlabelable要素を曖昧なまま含めたりする構造は避けます。
Labelable elements
HTML Standardでlabelの対象になり得る主な要素は次のとおりです。inputはHidden stateを除きます。
| 要素 | 確認する境界 |
|---|---|
button | 子孫の内容をlabelとするbutton。form-associatedでもある |
input | Hidden state以外の状態。typeにより入力・選択・送信などの処理が変わる |
meter / output / progress | 値や処理結果を表すform-associated要素としてlabelとの関係を確認する |
select / textarea | 選択部品・複数行入力部品のaccessible nameと操作対象を確認する |
| Form-associated custom element | 仕様上labelableとして扱われるカスタム要素では、ElementInternalsとlabelの関係も対象になる |
div、p、通常のspanなどはlabelableなform controlではありません。これらにforで関連付けても、labelのlabeled controlにはなりません。
Determining the labeled control
for属性による明示的な関連付け
<label for="email">メールアドレス</label>
<input id="email" name="email" type="email">
forが指定されている場合、その値はlabelと同じtreeにあるlabelable要素のIDでなければなりません。同じIDを持つ要素がある場合も、tree orderで最初に見つかる要素がlabelableであることが条件です。その要素がlabelのlabeled controlになります。
子孫による暗黙の関連付け
<label>
メールアドレス
<input name="email" type="email">
</label>
forが指定されておらず、labelにlabelableな子孫がある場合は、tree orderで最初のlabelableな子孫がlabeled controlになります。content model上、対象のlabelable要素以外のlabelable要素や、別のlabel要素を同じlabel内に置くことはできません。
Content model / ID境界
明示的な関連付けでは、単に文字列が一致するだけでは不十分です。次の条件を一緒に確認します。
forの値が、対象要素のidと一致する。- labelと対象要素が同じtreeにある。
- tree orderで最初に一致する要素がlabelableである。
- ページ内の
idを重複させず、対象を一意に判定できる。
labelはform ownerを指定する要素ではありません。labelのform IDL属性は、関連するlabeled controlがform-associatedであれば、そのcontrolのform ownerを返しますが、label自身にform content attributeがあるという意味ではありません。
Activation behavior
labelの正確な既定表示とbehavior、とくにactivation behaviorはplatformのlabel behaviorに合わせるべきものとして仕様に記述されています。platformによっては、labelをクリックすると対象のcontrolへfocusしたり、controlへのclick eventを発生させたりします。したがって「labelは必ずチェックを切り替える」と一般化してはいけません。
label内のinteractive contentを対象とするevent、およびその子孫を対象とするeventについては、labelのactivation behaviorは何もしない境界があります。リンクや別のbuttonをlabel内に置く構造は、操作対象が競合するため避けるのが安全です。
DOM Interface
label要素はHTMLLabelElementとして公開されます。
const label = document.querySelector('label');
label.control; // labeled control または null
label.form; // control の form owner または null
label.htmlFor; // for content attribute の反映値
controlは、labelのlabeled controlを返します。なければnullです。formは、labeled controlがform-associatedであるとき、そのform ownerを返します。条件を満たさなければnullです。htmlForは、forcontent attributeを反映する読み書き可能なIDL属性です。
Accessible nameとの関係
labelとの関連付けは、フォーム部品のaccessible nameを決めるnativeな情報源の1つです。HTML-AAMでは、controlにaria-labelやaria-labelledbyがない、または計算結果が空である場合に、関連付けられたlabelのsubtreeのtext equivalentを使う規則が示されています。controlの種類や複数labelの有無によって計算条件は変わります。
placeholder、見た目の近くに置いたテキスト、CSSの::beforeなどを、labelとの関連付けの代わりに扱ってはいけません。
Fact / Evidence(主張 / 根拠)
主要Factを、適用条件・確認状態・仕様上の根拠位置と対応付けています。実装差異や未実施の観測は、下のImplementation Evidenceに分けています。
| 種別 | Fact / 主張 | 条件・範囲 | 状態 | 根拠 |
|---|---|---|---|---|
| SPEC | labelはユーザーインターフェース内のform controlのcaptionを表し、labelableなcontrolと関連付けられます。 | labelの意味、category、content model、関連付けを確認する場合。 | 確認済み | HTML Standard: the label element |
| SPEC | for指定時は、同じtree内のID一致要素を解決し、tree orderで最初の要素がlabelableであればlabeled controlになります。 | for属性、id、同じtree、重複ID、labelable判定を合わせて確認する場合。 | 確認済み | HTML Standard: labeled control |
| SPEC | forがない場合は、label内でtree order上最初のlabelableな子孫がlabeled controlになります。 | 暗黙の関連付けとlabelのcontent modelを確認する場合。 | 確認済み | HTML Standard: implicit label association |
| SPEC | labelの正確な既定表示とactivation behaviorはplatformのlabel behaviorに合わせる境界を持ちます。 | labelへのuser activation、対象control、interactive content descendantを確認する場合。 | 確認済み | HTML Standard: label activation behavior |
| SPEC | HTMLLabelElementはcontrol、form、htmlForのAPIを公開します。 | labeled control、form owner、forの反映値をDOMから取得する場合。 | 確認済み | HTML Standard: HTMLLabelElement |
| AAM | 関連付けられたlabelのtext equivalentは、条件に応じてform controlのaccessible nameの計算に使われます。 | controlの種類、aria-label / aria-labelledby、複数label、label内のcontrolを確認する場合。 | 確認済み | HTML-AAM: Accessible Name Computations |
Evidence
- HTML Standard: The label element — 意味、category、content model、for、labeled control、activation behavior、DOM interface
- HTML Standard: labelable elements — labelableなform-associated elementの範囲
- HTML Accessibility API Mappings — 関連labelを含むaccessible nameの計算
- Web Platform Tests — label association、activation、DOM API、accessibilityに関係するテストの対応付け先
Implementation Evidence
仕様上の主張とは別に、ブラウザー実装・WPT・アクセシビリティ観測を記録します。未実施の項目は確認済みとは扱いません。
共通fixture / 記録: <form id="evidence-form" method="get">内に、type省略のinput、for/idによる明示関連、label内inputの暗黙関連、required、disabled、submitとtype省略のbuttonを配置しました。環境: Chrome 152.0.0.0(Windows NT 10.0) / 確認日 2026-09-12。
| 種別 | 再現確認の範囲 | 記録する条件 | 状態 |
|---|---|---|---|
| IMPL | for/idによる明示的関連付け、暗黙の子孫関連付け、label click時のfocus、control API | 共通fixtureをChrome 152.0.0.0 / Windows NT 10.0で確認。明示・暗黙のinputは各labels.length=1、明示labelのクリック後のactiveElement.idはexplicit-inputでした。 | 確認済み(Chrome 1台) |
| WPT | labelable要素、同じtreeのID解決、activation、HTMLLabelElement | 対応候補: labelable-elements.html、forward-focus-to-associated-element.html、clicking-interactive-content.html。2026-09-15 / Chrome 152.0.0.0 / Windows NT 10.0 / wpt.liveで3件を実行し68/68 pass。選定外のWPTと他ブラウザーは未評価 | 部分実行(68/68 pass) |
| AAM | 関連labelから導かれるaccessible name、disabled stateのブラウザーAX観測 | 同じfixtureのAccessibility treeで、明示・暗黙label付きinputがそれぞれ「Explicit name」「Implicit email」のtext fieldとして表示され、disabled fieldはdisabled状態で表示されました。 | 観測済み(Chrome AX) |
WPTの対応付けにはWPTリポジトリ、アクセシビリティの基準にはHTML-AAMを参照します。
Coverage / Open Issues
- 確認済みlabelの意味、category、content model、labelable要素、for/idと暗黙の関連付けの基本
- 確認済みlabeled control、activation behaviorのplatform境界、HTMLLabelElementの主要API
- 確認済み関連labelとform controlのaccessible nameに関するHTML-AAMの入口
- 未完了ブラウザー別のfocus・click・default presentation、form-associated custom elementの実装差
- 未完了正確なWPT対応、各platformのアクセシビリティツリー、支援技術ごとの観測、歴史的変更
このページは初期Coverageです。label要素と関連するすべてのフォーム処理、アクセシビリティ実装、ブラウザー差異の検証完了を主張するものではありません。
Related surface
初心者向けのforとid、囲む書き方、フォーム部品へのlabelの付け方はYugienのlabel要素ページを参照してください。controlの状態はinput要素、送信とform ownerはform要素、labelableなbuttonはbutton要素でも確認できます。