<label>: Das Label-Element
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Das <label>
HTML-Element stellt eine Beschriftung für ein Element in einer Benutzeroberfläche dar.
Probieren Sie es aus
<div class="preference">
<label for="cheese">Do you like cheese?</label>
<input type="checkbox" name="cheese" id="cheese" />
</div>
<div class="preference">
<label for="peas">Do you like peas?</label>
<input type="checkbox" name="peas" id="peas" />
</div>
.preference {
display: flex;
justify-content: space-between;
width: 60%;
margin: 0.5rem;
}
Ein <label>
mit einem Formularelement wie <input>
oder <textarea>
zu verknüpfen, bietet einige wesentliche Vorteile:
- Der Label-Text ist nicht nur optisch mit seinem entsprechenden Texteingabefeld verbunden, sondern auch programmatisch. Das bedeutet zum Beispiel, dass ein Screenreader das Label liest, wenn der Benutzer auf das Formulareingabefeld fokussiert ist, was es einem Benutzer mit assistiver Technologie erleichtert zu verstehen, welche Daten eingegeben werden sollen.
- Wenn ein Benutzer ein Label anklickt oder berührt/tippt, überträgt der Browser den Fokus auf das zugehörige Eingabefeld (das resultierende Ereignis wird auch für das Eingabefeld ausgelöst). Diese vergrößerte Trefferfläche zur Fokussierung des Eingabefeldes bietet einen Vorteil für jeden, der versucht, es zu aktivieren – einschließlich derjenigen, die ein Touchscreen-Gerät verwenden.
Um ein <label>
-Element explizit mit einem <input>
-Element zu verknüpfen, müssen Sie zuerst das id
-Attribut zum <input>
-Element hinzufügen. Anschließend fügen Sie das for
-Attribut zum <label>
-Element hinzu, wobei der Wert von for
identisch mit dem id
im <input>
-Element sein muss.
Alternativ können Sie das <input>
direkt innerhalb des <label>
verschachteln, in welchem Fall for
- und id
-Attribute nicht benötigt werden, da die Zuordnung implizit ist:
<label>
Do you like peas?
<input type="checkbox" name="peas" />
</label>
Das Formularelement, das ein Label beschriftet, wird als beschriftetes Steuerelement des Label-Elements bezeichnet. Mehrere Labels können mit demselben Formularelement verknüpft werden:
<label for="username">Enter your username:</label>
<input id="username" name="username" type="text" />
<label for="username">Forgot your username?</label>
Elemente, die mit einem <label>
-Element verknüpft werden können, umfassen <button>
, <input>
(außer type="hidden"
), <meter>
, <output>
, <progress>
, <select>
und <textarea>
.
Attribute
Dieses Element enthält die globalen Attribute.
for
-
Der Wert des
for
-Attributs muss eine einzelneid
für ein beschriftbares formularbezogenes Element im selben Dokument wie das<label>
-Element sein. Jedes einzelnelabel
-Element kann nur mit einem Formularelement verknüpft werden.Hinweis: Um das
for
-Attribut programmatisch festzulegen, verwenden SiehtmlFor
.Das erste Element im Dokument mit einem
id
-Attribut, das mit dem Wert desfor
-Attributs übereinstimmt, ist das beschriftete Steuerelement für dieseslabel
-Element — wenn das Element mit dieserid
tatsächlich ein beschriftbares Element ist. Ist es kein beschriftbares Element, hat dasfor
-Attribut keine Wirkung. Wenn es andere Elemente gibt, die ebenfalls mit demid
-Wert übereinstimmen, die später im Dokument erscheinen, werden sie nicht berücksichtigt.Mehrere
label
-Elemente können denselben Wert für ihrfor
-Attribut erhalten; dadurch erhält das zugehörige Formularelement (das Formularelement, auf das derfor
-Wert verweist) mehrere Labels.Hinweis: Ein
<label>
-Element kann sowohl einfor
-Attribut als auch ein darin enthaltenes Steuerelement-Element haben, solange dasfor
-Attribut auf das darin enthaltene Steuerelement-Element verweist.
Styling mit CSS
Barrierefreiheit
Interaktive Inhalte
Platzieren Sie keine interaktiven Elemente wie Anker oder Schaltflächen in einem label
. Dadurch wird es schwierig, das mit dem label
verknüpfte Formulareingabefeld zu aktivieren.
Nicht so machen:
<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>
Besser so:
<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>
Überschriften
Das Platzieren von Überschriftselementen innerhalb eines <label>
stört viele Arten von assistiver Technologie, da Überschriften häufig als Navigationshilfe verwendet werden. Wenn der Text des Labels visuell angepasst werden muss, verwenden Sie CSS-Klassen, die auf das <label>
-Element angewendet werden.
Wenn ein Formular oder ein Abschnitt eines Formulars einen Titel benötigt, verwenden Sie das <legend>
-Element innerhalb eines <fieldset>
.
Nicht so machen:
<label for="your-name">
<h3>Your name</h3>
<input id="your-name" name="your-name" type="text" />
</label>
Besser so:
<label class="large-label" for="your-name">
Your name
<input id="your-name" name="your-name" type="text" />
</label>
Schaltflächen
Beispiele
Definieren eines impliziten Labels
<label>Click me <input type="text" /></label>
Definieren eines expliziten Labels mit dem "for"-Attribut
<label for="username">Click me to focus on the input field</label>
<input type="text" id="username" />
Technische Zusammenfassung
Inhaltskategorien | Fließinhalt, Phrasierungsinhalt, interaktiver Inhalt, formularassoziiertes Element, greifbarer Inhalt. |
---|---|
Erlaubter Inhalt |
Phrasierungsinhalt, aber keine Nachkommenelemente label . Keine
beschriftbaren
Elemente außer dem beschrifteten Steuerungselement sind erlaubt.
|
Tag-Auslassung | Keine, sowohl das Start- als auch das End-Tag sind zwingend erforderlich. |
Erlaubte Eltern | Jedes Element, das Phrasierungsinhalt akzeptiert. |
Implizite ARIA-Rolle | Keine entsprechende Rolle |
Erlaubte ARIA-Rollen | Keine role erlaubt |
DOM-Schnittstelle | [`HTMLLabelElement`](/de/docs/Web/API/HTMLLabelElement) |
Spezifikationen
Specification |
---|
HTML # the-label-element |