メインコンテンツへスキップ

label要素


1.仕様

LABEL要素は、
ユーザーインターフェイスの
キャプションを
表します。

label

フォームフィールドのラベルテキスト (form field label text)

種類

通常要素

コンテンツモデル
0個以上のフレージングコンテンツ

0個以上のフレージングコンテンツが配置できます。

フレージングコンテンツに分類される要素は、script要素, noscript要素, template要素, input要素, textarea要素, select要素, label要素, button要素, output要素, progress要素, meter要素, datalist要素, picture要素, object要素, img要素, iframe要素, embed要素, video要素, audio要素, canvas要素, map要素, area要素, a要素, ins要素, del要素, abbr要素, b要素, bdi要素, bdo要素, cite要素, code要素, data要素, dfn要素, em要素, i要素, kbd要素, mark要素, q要素, s要素, samp要素, small要素, span要素, strong要素, sub要素, sup要素, u要素, var要素, time要素, ruby要素, br要素, wbr要素, slot要素, テキスト です。

要素のラベル付きコントロールである場合を除き、子孫にラベル付け可能な要素はなく、子孫ラベル要素もありません。

タグの省略

どちらのタグも省略できません。

コンテンツ属性
グローバル属性 他
for属性
ラベルをフォームコントロールに関連付ける
DOM インターフェイス
HTMLLabelElement
  1. [Exposed=Window]
  2. interface HTMLLabelElement : HTMLElement {
  3. [HTMLConstructor] constructor();
  4.  
  5. readonly attribute HTMLFormElement? form;
  6. [CEReactions] readonly attribute DOMString htmlFor;
  7. readonly attribute HTMLElement? control;
  8. };
HTMLElement
  1. [Exposed=Window]
  2. interface HTMLElement : Element {
  3. [HTMLConstructor] constructor();
  4.  
  5. // metadata attributes
  6. [CEReactions] attribute DOMString title;
  7. [CEReactions] attribute DOMString lang;
  8. [CEReactions] attribute boolean translate;
  9. [CEReactions] attribute DOMString dir;
  10.  
  11. // user interaction
  12. [CEReactions] attribute (boolean or unrestricted double or DOMString)? hidden;
  13. [CEReactions] attribute DOMString inert;
  14. undefined click();
  15. [CEReactions] attribute DOMString accessKey;
  16. readonly attribute DOMString accessKeyLabel;
  17. [CEReactions] attribute boolean draggable;
  18. [CEReactions] attribute boolean spellcheck;
  19. [CEReactions] attribute DOMString writingSuggestions;
  20. [CEReactions] attribute DOMString autocapitalize;
  21.  
  22. [CEReactions] attribute [LegacyNullToEmptyString] DOMString innerText;
  23. [CEReactions] attribute [LegacyNullToEmptyString] DOMString outerText;
  24.  
  25. ElementInternals attachInternals();
  26.  
  27. // The popover API
  28. undefined showPopover();
  29. undefined hidePopover();
  30. boolean togglePopover(optional boolean force);
  31. [CEReactions] attribute DOMString? popover;
  32. };
  33.  
  34. HTMLElement includes GlobalEventHandlers;
  35. HTMLElement includes ElementContentEditable;
  36. HTMLElement includes HTMLOrSVGElement;
Element
  1. [Exposed=Window]
  2. interface Element : Node {
  3. readonly attribute DOMString? namespaceURI;
  4. readonly attribute DOMString? prefix;
  5. readonly attribute DOMString localName;
  6. readonly attribute DOMString tagName;
  7.  
  8. [CEReactions] attribute DOMString id;
  9. [CEReactions] attribute DOMString className;
  10. [SameObject, PutForwards=value] readonly attribute DOMTokenList classList;
  11. [CEReactions, Unscopable] attribute DOMString slot;
  12.  
  13. boolean hasAttributes();
  14. [SameObject] readonly attribute NamedNodeMap attributes;
  15. sequence<DOMString> getAttributeNames();
  16. DOMString? getAttribute(DOMString qualifiedName);
  17. DOMString? getAttributeNS(DOMString? namespace, DOMString localName);
  18. [CEReactions] undefined setAttribute(DOMString qualifiedName, DOMString value);
  19. [CEReactions] undefined setAttributeNS(DOMString? namespace, DOMString qualifiedName, DOMString value);
  20. [CEReactions] undefined removeAttribute(DOMString qualifiedName);
  21. [CEReactions] undefined removeAttributeNS(DOMString? namespace, DOMString localName);
  22. [CEReactions] boolean toggleAttribute(DOMString qualifiedName, optional boolean force);
  23. boolean hasAttribute(DOMString qualifiedName);
  24. boolean hasAttributeNS(DOMString? namespace, DOMString localName);
  25.  
  26. Attr? getAttributeNode(DOMString qualifiedName);
  27. Attr? getAttributeNodeNS(DOMString? namespace, DOMString localName);
  28. [CEReactions] Attr? setAttributeNode(Attr attr);
  29. [CEReactions] Attr? setAttributeNodeNS(Attr attr);
  30. [CEReactions] Attr removeAttributeNode(Attr attr);
  31.  
  32. ShadowRoot attachShadow(ShadowRootInit init);
  33. readonly attribute ShadowRoot? shadowRoot;
  34.  
  35. Element? closest(DOMString selectors);
  36. boolean matches(DOMString selectors);
  37. boolean webkitMatchesSelector(DOMString selectors); // legacy alias of .matches
  38.  
  39. HTMLCollection getElementsByTagName(DOMString qualifiedName);
  40. HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName);
  41. HTMLCollection getElementsByClassName(DOMString classNames);
  42.  
  43. [CEReactions] Element? insertAdjacentElement(DOMString where, Element element); // legacy
  44. undefined insertAdjacentText(DOMString where, DOMString data); // legacy
  45. };
GlobalEventHandlers
  1. interface mixin GlobalEventHandlers {
  2. attribute EventHandler onabort;
  3. attribute EventHandler onauxclick;
  4. attribute EventHandler onbeforeinput;
  5. attribute EventHandler onbeforematch;
  6. attribute EventHandler onbeforetoggle;
  7. attribute EventHandler onblur;
  8. attribute EventHandler oncancel;
  9. attribute EventHandler oncanplay;
  10. attribute EventHandler oncanplaythrough;
  11. attribute EventHandler onchange;
  12. attribute EventHandler onclick;
  13. attribute EventHandler onclose;
  14. attribute EventHandler oncontextlost;
  15. attribute EventHandler oncontextmenu;
  16. attribute EventHandler oncontextrestored;
  17. attribute EventHandler oncopy;
  18. attribute EventHandler oncuechange;
  19. attribute EventHandler oncut;
  20. attribute EventHandler ondblclick;
  21. attribute EventHandler ondrag;
  22. attribute EventHandler ondragend;
  23. attribute EventHandler ondragenter;
  24. attribute EventHandler ondragleave;
  25. attribute EventHandler ondragover;
  26. attribute EventHandler ondragstart;
  27. attribute EventHandler ondrop;
  28. attribute EventHandler ondurationchange;
  29. attribute EventHandler onemptied;
  30. attribute EventHandler onended;
  31. attribute OnErrorEventHandler onerror;
  32. attribute EventHandler onfocus;
  33. attribute EventHandler onformdata;
  34. attribute EventHandler oninput;
  35. attribute EventHandler oninvalid;
  36. attribute EventHandler onkeydown;
  37. attribute EventHandler onkeypress;
  38. attribute EventHandler onkeyup;
  39. attribute EventHandler onload;
  40. attribute EventHandler onloadeddata;
  41. attribute EventHandler onloadedmetadata;
  42. attribute EventHandler onloadstart;
  43. attribute EventHandler onmousedown;
  44. [LegacyLenientThis] attribute EventHandler onmouseenter;
  45. [LegacyLenientThis] attribute EventHandler onmouseleave;
  46. attribute EventHandler onmousemove;
  47. attribute EventHandler onmouseout;
  48. attribute EventHandler onmouseover;
  49. attribute EventHandler onmouseup;
  50. attribute EventHandler onpaste;
  51. attribute EventHandler onpause;
  52. attribute EventHandler onplay;
  53. attribute EventHandler onplaying;
  54. attribute EventHandler onprogress;
  55. attribute EventHandler onratechange;
  56. attribute EventHandler onreset;
  57. attribute EventHandler onresize;
  58. attribute EventHandler onscroll;
  59. attribute EventHandler onscrollend;
  60. attribute EventHandler onsecuritypolicyviolation;
  61. attribute EventHandler onseeked;
  62. attribute EventHandler onseeking;
  63. attribute EventHandler onselect;
  64. attribute EventHandler onslotchange;
  65. attribute EventHandler onstalled;
  66. attribute EventHandler onsubmit;
  67. attribute EventHandler onsuspend;
  68. attribute EventHandler ontimeupdate;
  69. attribute EventHandler ontoggle;
  70. attribute EventHandler onvolumechange;
  71. attribute EventHandler onwaiting;
  72. attribute EventHandler onwebkitanimationend;
  73. attribute EventHandler onwebkitanimationiteration;
  74. attribute EventHandler onwebkitanimationstart;
  75. attribute EventHandler onwebkittransitionend;
  76. attribute EventHandler onwheel;
  77. };
ElementContentEditable
  1. interface mixin ElementContentEditable {
  2. [CEReactions] attribute DOMString contentEditable;
  3. [CEReactions] attribute DOMString enterKeyHint;
  4. readonly attribute boolean isContentEditable;
  5. [CEReactions] attribute DOMString inputMode;
  6. };
HTMLOrSVGElement
  1. interface mixin HTMLOrSVGElement {
  2. [SameObject] readonly attribute DOMStringMap dataset;
  3. attribute DOMString nonce; // intentionally no [CEReactions]
  4.  
  5. [CEReactions] attribute boolean autofocus;
  6. [CEReactions] attribute long tabIndex;
  7. undefined focus(optional FocusOptions options = {});
  8. undefined blur();
  9. };
ARIA in HTML
暗黙的="No" ARIAロール="No" aria-* 属性="Global"

暗黙的な ARIAセマンティクスがありませんが、意味はあり、この意味は、ARIA によって提供されず、ARIA のユーザーに公開されていないロール、状態、プロパティで表現される可能性があります。

作成者は、暗黙的な ARIAセマンティクス, または HTML要素のネイティブセマンティクスを上書きしてはいけません。

グローバル aria-* 属性が記述できます。

レンダリング
特になし
  1. label {
  2. 0: N;
  3. 1: o;
  4. 2: t;
  5. 3: h;
  6. 4: i;
  7. 5: n;
  8. 6: g;
  9. }

CSS を大雑把に読むと、 特に指定はされていません。既定値から、フローレイアウトに配置されたときにインラインレベルのボックス(インラインボックス)を生成すると思われます。 などになります。

説明
label要素は、ユーザーインターフェイスのキャプションを表します。キャプションは、for属性を使用するか、label要素自体の中にフォームコントロールを配置することによって、label要素のラベル付きコントロールとして知られる特定のフォームコントロールに関連付けることができます。
  1. <!DOCTYPE html>
  2. <html lang="ja">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>label要素の例 - (Example of label element) | 離珠のHTMLでしぃ!</title>
  6. </head>
  7. <body>
  8. <h1>label要素の例</h1>
  9. <form action="../Html/fmreceive.htm">
  10. <label>
  11. label
  12. <input name="nipInput" value="abc">
  13. </label>
  14. <button name="nbtSender" value="../Html/exlabel.htm">ボタン</button>
  15. <br>受信用の<br>ページへ
  16. </form>
  17. </body>
  18. </html>

このサンプルへのリンクです。
(./exlabel.htm)

JSONデータ
JSON形式での、データのイメージです。
  1. {
  2. "label": {
  3. "check": "2024-09-01",
  4. "group": "Form",
  5. "element": "- - (%Phrasing)* -- form field label text. (Normal elements.) [Flow|Phrasing|Interactive|Palpable] --",
  6. "attlist": {
  7. "%Global;": "",
  8. "for": "IDREF #IMPLIED -- Associate the label with form control --",
  9. },
  10. "comment": "フォームフィールドのラベルテキスト (form field label text)",
  11. "point": "ユーザーインターフェイスのキャプションを表します。キャプションは、for属性を使用するか、label要素自体の中にフォームコントロールを配置することによって、label要素のラベル付きコントロールとして知られる特定のフォームコントロールに関連付けることができます。",
  12. "kind": "Normal",
  13. "categories": [
  14. "Flow",
  15. "Phrasing",
  16. "Interactive",
  17. "Palpable",
  18. ],
  19. "used": "parent (%Phrasing)*",
  20. "contentmodel": "label (%Phrasing)*",
  21. "contentmodelsupplement": "要素のラベル付きコントロールである場合を除き、子孫にラベル付け可能な要素はなく、子孫ラベル要素もありません。",
  22. "tag": [
  23. "-",
  24. "-",
  25. ],
  26. "attributes": {"for": "ラベルをフォームコントロールに関連付ける"},
  27. "dominterface": "HTMLLabelElement",
  28. "rendering": "None",
  29. "reference": [
  30. {
  31. "title": "HTML Living Standard. 4.10.4 The label element.",
  32. "href": "https://html.spec.whatwg.org/multipage/forms.html#the-label-element",
  33. "heading": "HTML Living Standard. 4.10.4 The label element",
  34. "sub": "Last Updated 27 August 2024",
  35. },
  36. {
  37. "title": "HTML 5.2 W3C Recommendation. 4.10.4. The label element. W3C Recommendation, 14 December 2017.",
  38. "href": "https://www.w3.org/TR/2017/REC-html52-20171214/sec-forms.html#the-label-element",
  39. "heading": "HTML 5.2 W3C 勧告. 4.10.4. The label element",
  40. "sub": "W3C勧告、2017年12月14日",
  41. },
  42. {
  43. "title": "HTML 5.1 W3C Recommendation. 4.10.4. The label element. W3C Recommendation, 1 November 2016.",
  44. "href": "https://www.w3.org/TR/2016/REC-html51-20161101/sec-forms.html#the-label-element",
  45. "heading": "HTML 5.1 W3C 勧告. 4.10.4. The label element",
  46. "sub": "W3C勧告、2016年11月1日",
  47. },
  48. {
  49. "title": "HTML 5 W3C Recommendation. 4.10.4 The label element. W3C Recommendation, 28 October 2014.",
  50. "href": "https://www.w3.org/TR/2014/REC-html5-20141028/forms.html#the-label-element",
  51. "heading": "HTML 5 W3C 勧告. 4.10.4 The label element",
  52. "sub": "W3C勧告、2014年10月28日",
  53. },
  54. {
  55. "title": "HTML 4.01 Specification W3C Recommendation. 17.9.1 The LABEL element. W3C Recommendation 24 December 1999.",
  56. "href": "https://www.w3.org/TR/html401/interact/forms.html#h-17.9.1",
  57. "heading": "HTML 4.01 Specification W3C 勧告. 17.9.1 The LABEL element",
  58. "sub": "W3C勧告1999年12月24日",
  59. },
  60. {
  61. "title": "MDN Web Docs. HTML <label>: The Label element.",
  62. "href": "https://developer.mozilla.org/ja/docs/Web/HTML/Element/label",
  63. "heading": "<label>: ラベル要素 - HTML: ハイパーテキストマークアップ言語 | MDN",
  64. },
  65. ],
  66. "version": {
  67. "first": "HTML4",
  68. "latest": "HTML Living Standard",
  69. },
  70. }
  71. }

注意: 簡易に描画する為に、各項目の後ろに , を付与しています。JSON の形式では、末尾の項目の後には , は付けません。

最終確認日

2024-09-01


2.使用可能な箇所

フレージングコンテンツ
受け入れる要素に
配置できます。

label要素を使用できる状態(コンテキストContext)は、フレージングコンテンツを受け入れる要素に配置できます。

フレージングコンテンツを受け入れる要素は、h1要素, h2要素, h3要素, h4要素, h5要素, h6要素, p要素, pre要素, output要素, progress要素, meter要素, label要素, datalist要素, body要素, section要素, nav要素, aside要素, article要素, header要素, footer要素, main要素, address要素, li要素, dt要素, dd要素, caption要素, th要素, td要素, form要素, fieldset要素, search要素, blockquote要素, figure要素, figcaption要素, div要素, dialog要素, abbr要素, b要素, bdi要素, bdo要素, cite要素, code要素, data要素, dfn要素, em要素, i要素, kbd要素, mark要素, q要素, s要素, samp要素, small要素, span要素, strong要素, sub要素, sup要素, u要素, var要素 です。

尚 厳密に言うと、コンテンツモデルフレージングコンテンツ, フローコンテンツのいずれかである要素に配置できます。少なくとも現在は、カテゴリフレージングコンテンツである要素はフローコンテンツでもあります。なので、コンテンツモデルフローコンテンツである要素にはカテゴリフレージングコンテンツである要素も配置できるのが現状です。


3.配置できるコンテンツ

フレージングコンテンツを
配置できます。

label要素(内容コンテンツContent)として、0 以上のフレージングコンテンツを配置できます。ただし要素のラベル付きコントロールでない限り、子孫のラベル付け可能な要素はなく、子孫のlabel要素もありません。

フレージングコンテンツである要素は、script要素, noscript要素, template要素, input要素, textarea要素, select要素, button要素, output要素, progress要素, meter要素, datalist要素, picture要素, object要素, img要素, iframe要素, embed要素, video要素, audio要素, canvas要素, map要素, area要素, a要素, ins要素, del要素, abbr要素, b要素, bdi要素, bdo要素, br要素, cite要素, code要素, data要素, dfn要素, em要素, i要素, kbd要素, mark要素, q要素, ruby要素, s要素, samp要素, small要素, span要素, strong要素, sub要素, sup要素, time要素, u要素, var要素, wbr要素, slot要素, text です。


4.属性

グローバル属性と、
for を
設定できます。

labelは、グローバル属性for属性を設定できます。

for属性

  1. <form action="./fmreceive.htm">
  2. <label for="iipInput41">さんぷる</label>
  3. <input id="iipInput41" name="nipText" type="text" value="123">
  4. <button name="nbtSender" value="./folabel.htm#MH3FOR">ボタン</button>
  5. </form>

forは、キャプションを関連付けるフォームコントロールを示す為に指定できます。属性が指定されている場合、属性の値は、labelと同じツリー内のラベル付け可能な要素の ID である必要があります。属性が指定されていて、ツリー内にforの値と等しい ID を持つ要素があり、ツリー順序で最初のそのような要素がラベル付け可能な要素である場合、その要素はlabelのラベル付けされたコントロールです。

forが指定されていないが、labelラベル付け可能な要素の子孫がある場合、ツリー順序で最初のそのような子孫がlabelのラベル付けされたコントロールです。

例示では見易さの為に、inputにスタイルシートで装飾(幅)の指定をしています。


5.Web API

input要素
(HTMLInputElement
オブジェクト)などの
プロパティである
labels
(NodeList
オブジェクト)を
返します。

label要素単体を表すプロパティはないですが、ラベル付け可能な要素とすべてのinput要素には、ツリー順序でラベル付けされたコントロールが問題の要素であるlabel要素のリストを表すライブ NodeList オブジェクトが関連付けられています。フォームに関連付けられたカスタム要素ではないラベル付け可能な要素の labels IDL 属性と、input要素の labels IDL 属性は、取得時にその NodeList オブジェクトを返す必要があり、常に同じ値を返す必要があります。ただし、この要素がtypeが Hidden 状態である入力要素である場合は、代わりに null を返す必要があります。


6.レンダリング

レンダリングについて
スタイルシートでの
仕様での提案は
特にないようです。

label要素は、フローレイアウトに配置されたときにインラインレベルのボックス(インラインボックス)を生成します。

コードを見易くする為に要素毎に改行すると、改行コードがスペースと扱われて意図しない隙間が表れる事があります。 描画を重視するかコードの見易さを重視するか、折衷案でタグの内で改行するか、いろいろ配慮が必要です。

displayプロパティの既定値はinlineであり、且つ継承性はありません。故に特に指定しなければ、インラインレベルのボックスを想定しているという事です。


7.気を付ける点

カテゴリ

インタラクティブコンテンツなので、祖先, 子孫にインタラクティブコンテンツは避けるべきです。仕様上では、「label要素インタラクティブコンテンツの子孫、およびそれらのインタラクティブコンテンツの子孫の子孫を対象とするイベントに対するlabel要素のアクティベーション動作は、何もしないことにする必要があります」とあるだけです。使い手側の使い易さ, 分かり易さからインタラクティブコンテンツの重複する配置は避けるべきです。


8.付記