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.
for
id
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