The <label> represents a caption for an item in a user interface.
In the examples above you can see two form input examples — both with a corresponding <label>. This offers some major advantages:
To associate the <label> with an <input> element in the above style, you need to give the <input> an id attribute. The <label> then needs a for attribute whose value is the same as the input's id.
There is another style to consider. You can nest the <input> directly inside the <label>, in which case the for/id attributes are not needed because the association is implicit:
<label>Do you like peas? <input type="checkbox" name="peas"> </label>
Other usage notes:
<label> is clicked or tapped and it is associated with a form control, the resulting click event is also raised for the associated control.This element includes the global attributes.
forid of a labelable form-related element in the same document as the <label> element. The first such element in the document with an id matching the value of the for attribute is the labeled control for this label element. <label> element can have both a for attribute and a contained control element, as long as the for attribute points to the contained control element.form<form> element with which the label is associated (its form owner). If specified, the value of the attribute is the id of a <form> element in the same document. This lets you place label elements anywhere within a document, not just as descendants of their form elements.There are no special styling considerations for <label> elements — structurally they are simple inline elements, and so can be styled in much the same way as a <span> or <a> element. You can apply styling to them in any way you want, as long as you don't cause the text to become difficult to read.
<label>Click me <input type="text"></label>
<label for="username">Click me</label> <input type="text" id="username">
Don't place interactive elements such as anchors or buttons inside a label. Doing so will make it difficult for people to activate the form input associated with the label.
<label for="tac"> <input id="tac" type="checkbox" name="terms-and-conditions"> I agree to the <a href="terms-and-conditions.html">Terms and Conditions</a> </label>
<label for="tac"> <input id="tac" type="checkbox" name="terms-and-conditions"> I agree to the Terms and Conditions </label> <p> <a href="terms-and-conditions.html">Read our Terms and Conditions</a> </p>
Placing heading elements within a <label> will interfere with many kinds of assistive technology, as headings are commonly used as a navigation aid. If the label's text needs to be adjusted visually, use CSS classes applied to the <label> element instead.
If a form, or a section of a form needs a title, use the <legend> element placed within a <fieldset>.
<label for="your-name"> <h3>Your name</h3> <input id="your-name" name="your-name" type="text"> </label>
<label class="large-label" for="your-name"> Your name <input id="your-name" name="your-name" type="text"> </label>
An <input> element with a type="button" declaration and a valid value attribute does not need a label associated with it. Doing so may actually interfere with how assistive technology parses the button input. The same applies for the <button> element.
| Content categories | Flow content, phrasing content, interactive content, form-associated element, palpable content. |
|---|---|
| Permitted content |
Phrasing content, but no descendant label elements. No labelable elements other than the labeled control are allowed. |
| Tag omission | None, both the starting and ending tag are mandatory. |
| Permitted parents | Any element that accepts phrasing content. |
| Permitted ARIA roles | None |
| DOM interface | HTMLLabelElement |
| Specification | Status | Comment |
|---|---|---|
| HTML Living Standard The definition of '<label>' in that specification. | Living Standard | |
| HTML5 The definition of '<label>' in that specification. | Recommendation | |
| HTML 4.01 Specification The definition of '<label>' in that specification. | Recommendation | Initial definition |
| Desktop | ||||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | |
| Basic support | Yes | Yes | Yes | Yes | Yes | Yes |
for |
Yes | Yes | Yes | Yes | Yes | Yes |
form
|
Yes | Yes | ? — 49 | Yes | Yes | Yes |
| Mobile | |||||||
|---|---|---|---|---|---|---|---|
| Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | iOS Safari | Samsung Internet | |
| Basic support | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
for |
Yes | Yes | Yes | Yes | Yes | Yes | Yes |
form
|
Yes | Yes | Yes | ? — 49 | Yes | Yes | Yes |
Other form-related elements:
<form><input><button><datalist><legend><select><optgroup><option><textarea><keygen><fieldset><output><progress><meter>
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label