Die meisten Eingabefelder haben etwas gemeinsam – sie sind am glücklichsten mit einem Begleitlabel! Und das Glück hört hier nicht auf. Formulare mit ordnungsgemäßen Eingabefeldern und Labels sind für Menschen viel einfacher zu bedienen, und das macht die Menschen auch glücklich.
In diesem Beitrag möchte ich mich auf Situationen konzentrieren, in denen das Fehlen einer semantischen Kombination aus Label und Eingabefeld es für alle Arten von Menschen schwieriger macht, Formulare auszufüllen. Da Millionen von Menschen ihren Lebensunterhalt mit Formularen verdienen, lassen Sie uns in die besten Tipps eintauchen, die ich kenne, um eine erfüllende und harmonische Beziehung zwischen einem Eingabefeld und einem Label zu schaffen.
Inhaltswarnung: In diesem Beitrag werden Themen wie Liebe und Beziehungen behandelt.
Die Liebesgeschichte beginnt hier! Lassen Sie uns die Grundlagen für die Erstellung glücklicher Labels und Eingabefelder behandeln.
Wie man ein Label und ein Eingabefeld koppelt
Es gibt zwei Möglichkeiten, ein Label und ein Eingabefeld zu koppeln. Eine besteht darin, das Eingabefeld in ein Label zu wickeln (implizit), und die andere besteht darin, dem Label ein for-Attribut und dem Eingabefeld eine id hinzuzufügen (explizit).
Stellen Sie sich ein implizites Label als Umarmung eines Eingabefeldes vor und ein explizites Label als daneben stehend und seine Hand haltend.
<label>
Name:
<input type="text" name="name" />
</label>
Der Wert des for-Attributs eines expliziten Labels muss mit dem Wert der id seines Eingabefeldes übereinstimmen. Wenn for beispielsweise den Wert name hat, sollte id ebenfalls den Wert name haben.
<label for="name">Name: </label>
<input type="text" id="name" name="name" />
Leider wird ein implizites Label nicht von allen assistiven Technologien korrekt behandelt, auch wenn for- und id-Attribute verwendet werden. Daher ist es immer am besten, ein explizites Label anstelle eines impliziten Labels zu verwenden.
<!-- IMPLICIT LABEL (not recommended for use) - the label wraps the input. -->
<label>
Name:
<input type="text" name="name" />
</label>
<!-- EXPLICIT LABEL (recommended for use) - the label is connected to an input via "for" and "id" -->
<label for="explicit-label-name">Name: </label>
<input type="text" id="explicit-label-name" name="name" />
Jedes einzelne Eingabefeld sollte nur mit einem Label gekoppelt sein. Und ein Label sollte nur mit einem Eingabefeld gekoppelt sein. Ja, Eingabefelder und Labels sind monogam. ♥️
Hinweis: Es gibt eine Art Ausnahme von dieser Regel: wenn wir mit einer Gruppe von Eingabefeldern arbeiten, z. B. mehreren Radio-Buttons oder Checkboxen. In diesen Fällen wird ein <legend>-Element verwendet, um bestimmte Eingabefeld-Elemente, wie z. B. Radio-Buttons, zu gruppieren und als zugängliches Label für die gesamte Gruppe zu dienen.
Nicht alle Eingabefelder benötigen Labels
Ein Eingabefeld mit type="submit" oder type="button" benötigt kein Label – das value-Attribut fungiert stattdessen als zugänglicher Label-Text. Ein Eingabefeld mit type="hidden" ist ebenfalls ohne Label in Ordnung. Aber alle anderen Eingabefelder, einschließlich <textarea> und <select>-Elementen, sind am glücklichsten mit einem Label-Begleiter.
Was gehört in ein Label
Der Inhalt, der in ein Label gehört, sollte
- Sein Partner-Eingabefeld beschreiben. Ein Label möchte jedem zeigen, dass es zu seinem Eingabefeld-Partner gehört.
- Sichtbar sein. Ein Label kann angeklickt oder angetippt werden, um sein Eingabefeld zu fokussieren. Der zusätzliche Platz, den es zur Interaktion mit dem Eingabefeld bietet, ist von Vorteil, da er die Tipp- oder Klickfläche vergrößert. Darauf werden wir gleich noch näher eingehen.
- Nur einfachen Text enthalten. Fügen Sie keine Elemente wie Überschriften oder Links hinzu. Auch hier werden wir weiter unten auf das „Warum“ eingehen.
Eine nützliche Sache, die Sie mit dem Inhalt eines Labels tun können, ist das Hinzufügen von Formatierungshinweisen. Zum Beispiel wird das Label für <input type="date" id="date"> wie erwartet <label for="date"> sein. Aber dann können wir dem Benutzer einen Hinweis geben, dass das Datum in einem bestimmten Format eingegeben werden muss, z. B. TT-MM-JJJJ, in Form eines <span> zwischen dem Label und dem Eingabefeld, das diese Anforderung angibt. Der Hinweis gibt nicht nur das Datumsformat an, sondern hat auch einen id-Wert, der einem aria-describedby-Attribut am Eingabefeld entspricht.
<!-- Describes what the input is for - should be plain text only -->
<label for="date">Start date</label>
<!-- Describes additional information, usually about formatting -->
<span id="date-format">(DD-MM-YYYY):</span>
<input type="date" id="date" aria-describedby="date-format" min="2021-03-01" max="2031-01-01" />
Auf diese Weise erhalten wir den Vorteil eines klaren Labels, das beschreibt, wofür das Eingabefeld bestimmt ist, und einen zusätzlichen Hinweis für den Benutzer, dass das Eingabefeld in einem bestimmten Format eingegeben werden muss.
Bewährte Praktiken für eine gesunde Beziehung
Die folgenden Tipps gehen über die Grundlagen hinaus und erklären, wie sichergestellt werden kann, dass ein Label und ein Eingabefeld so glücklich wie möglich sind.
Tun Sie: Fügen Sie ein Label an der richtigen Stelle hinzu
Es gibt ein WCAG-Erfolgskriterium, das besagt die visuelle Reihenfolge einer Seite sollte der Reihenfolge entsprechen, in der Elemente im DOM erscheinen. Das liegt daran,
Ein Benutzer mit eingeschränktem Sehvermögen, der eine Bildschirmlupe in Kombination mit einem Screenreader verwendet, kann verwirrt sein, wenn die Lesereihenfolge auf dem Bildschirm zu springen scheint. Ein Tastaturnutzer kann Schwierigkeiten haben vorherzusagen, wohin der Fokus als nächstes springt, wenn die Quellreihenfolge nicht mit der visuellen Reihenfolge übereinstimmt.
Denken Sie darüber nach. Wenn wir Standard-HTML haben, bei dem das Label vor dem Eingabefeld steht
<label for="orange">Orange</label>
<input type="checkbox" id="orange" name="orange">
Das platziert das Label vor dem Eingabefeld im DOM. Aber nehmen wir jetzt an, unser Label und Formular sind in einem flexiblen Container und wir verwenden CSS order, um Dinge umzukehren, bei denen das Eingabefeld visuell vor dem Label steht
label { order: 2; }
input { order: 1; }
Ein Screenreader-Benutzer, der zwischen Elementen navigiert, könnte erwarten, dass das Eingabefeld vor dem Label den Fokus erhält, weil das Eingabefeld visuell zuerst kommt. Aber was wirklich passiert, ist, dass das Label stattdessen den Fokus erhält. Sehen Sie hier für den Unterschied zwischen der Navigation mit einem Screenreader und einer Tastatur.
Wir sollten uns dessen bewusst sein. Es ist üblich, das Label für Checkboxen und Radio-Buttons rechts neben dem Eingabefeld zu platzieren. Dies kann erreicht werden, indem das Label *nach* dem Eingabefeld im HTML platziert wird, um sicherzustellen, dass DOM- und visuelle Reihenfolge übereinstimmen.
<form>
<!-- Checkbox with label on the right -->
<span>
<input type="checkbox" id="orange" name="orange">
<label for="orange">Orange</label>
</span>
<!-- Radio button with label on the right -->
<span>
<input type="radio" id="banana" name="banana">
<label for="banana">Banana</label>
</span>
<!-- Text input with label on the left -->
<span>
<label for="apple">How do you like them apples?</label>
<input type="text" id="apple" name="apple">
</span>
</form>
Tun Sie: Prüfen Sie Eingabefelder mit einem Screenreader
Ob ein Eingabefeld von Grund auf neu geschrieben oder mit einer Bibliothek erstellt wurde, es ist eine gute Idee, Ihre Arbeit mit einem Screenreader zu überprüfen. Dies dient dazu, sicherzustellen, dass
- Alle relevanten Attribute vorhanden sind – insbesondere die übereinstimmenden Werte der
for- undid-Attribute. - Der DOM entspricht der visuellen Reihenfolge.
- Der Label-Text klingt klar. Zum Beispiel wird "tt-mm-jjjj" anders vorgelesen als seine Großbuchstaben-Entsprechung (TT-MM-JJJJ).
In den letzten Jahren habe ich JavaScript-Bibliotheken wie downshift verwendet, um komplexe Formularelemente wie Autocomplete oder Comboboxen auf nativer HTML aufzubauen, wie Eingabefelder oder Selects. Die meisten Bibliotheken machen diese komplexen Elemente zugänglich, indem sie ARIA-Attribute mit JavaScript hinzufügen.
Die Vorteile nativer HTML-Elemente, die mit JavaScript erweitert wurden, gehen jedoch vollständig verloren, wenn JavaScript fehlerhaft ist oder deaktiviert ist, was sie unzugänglich macht. Prüfen Sie dies also und stellen Sie eine serverseitig gerenderte Alternative ohne JavaScript als sichere Fallback-Lösung bereit.
Sehen Sie sich diese grundlegenden Formular-Tests an, um festzustellen, wie ein Eingabefeld und sein Begleitlabel oder seine Legende geschrieben und von verschiedenen Screenreadern angekündigt werden sollten.
Tun Sie: Machen Sie das Label sichtbar
Die Verbindung eines Labels mit einem Eingabefeld ist wichtig, aber ebenso wichtig ist es, das Label sichtbar zu halten. Das Klicken oder Tippen auf ein sichtbares Label fokussiert sein Partner-Eingabefeld. Dies ist ein natives HTML-Verhalten, das einer riesigen Anzahl von Menschen zugute kommt.
Stellen Sie sich ein Label vor, das stolz seine Verbindung mit einem Eingabefeld zeigen möchte
Das heißt, es wird Zeiten geben, in denen ein Design ein verstecktes Label erfordert. Wenn ein Label versteckt werden muss, ist es daher entscheidend, dies auf zugängliche Weise zu tun. Ein häufiger Fehler ist die Verwendung von display: none oder visibility: hidden, um ein Label zu verstecken. Diese CSS-Display-Eigenschaften verstecken ein Element vollständig – nicht nur visuell, sondern auch für Screenreader.
Erwägen Sie die Verwendung des folgenden Codes, um Labels visuell zu verstecken
/* For non-natively-focusable elements. For natively focusable elements */
/* Use .visually-hidden:not(:focus):not(:active) */
.visually-hidden {
border-width: 0 !important;
clip: rect(1px, 1px, 1px, 1px) !important;
height: 1px !important;
overflow: hidden !important;
padding: 0 !important;
position: absolute !important;
white-space: nowrap !important;
width: 1px !important;
}
Kitty Giraudel erklärt ausführlich , wie man Inhalte verantwortungsbewusst versteckt.
Was zu vermeiden ist
Um eine gesunde Beziehung zwischen Eingabefeldern und Labels zu erhalten und aufrechtzuerhalten, gibt es einige Dinge, die Sie bei der Kopplung vermeiden sollten. Lassen Sie uns darauf eingehen, was diese sind und wie Sie sie verhindern können.
Nicht tun: Erwarten Sie, dass Ihr Eingabefeld in jedem Browser gleich ist
Es gibt bestimmte Arten von Eingabefeldern, die in einigen älteren Desktop-Browsern nicht unterstützt werden. Zum Beispiel wird ein Eingabefeld vom Typ type="date" in Internet Explorer (IE) 11 oder sogar in Safari 141 (veröffentlicht im September 2020) nicht unterstützt. Ein solches Eingabefeld fällt auf type="text" zurück. Wenn ein Datums-Eingabefeld kein klares Label hat und in älteren Browsern automatisch auf ein Text-Eingabefeld zurückfällt, können Benutzer verwirrt werden.
Nicht tun: Ein Label durch einen Platzhalter ersetzen
Hier ist, warum ein placeholder-Attribut bei einem Eingabefeld nicht anstelle eines Labels verwendet werden sollte
- Nicht alle Screenreader kündigen Platzhalter an.
- Der Wert eines
placeholderist in Gefahr, auf kleineren Geräten abgeschnitten zu werden oder wenn eine Seite im Browser übersetzt wird. Im Gegensatz dazu kann der Textinhalt eines Labels leicht in eine neue Zeile umgebrochen werden. - Nur weil ein Entwickler den hellgrauen
placeholder-Text auf seinem großen Retina-Bildschirm, in einem gut beleuchteten Raum, in einer ablenkungsfreien Umgebung sehen kann, heißt das nicht, dass jeder andere das kann. Einplaceholderkann selbst Menschen mit guter Sehkraft dazu bringen, die Augen zusammenzukneifen und schließlich aufzugeben.


- Sobald ein Zeichen in ein Eingabefeld eingegeben wurde, wird sein
placeholderunsichtbar – sowohl visuell als auch für Screenreader. Wenn jemand zurückgehen muss, um Informationen zu überprüfen, die er in ein Formular eingegeben hat, muss er die eingegebenen Informationen löschen, nur um den Platzhalter wieder zu sehen. - Das
placeholder-Attribut wird in IE 9 und darunter nicht unterstützt und verschwindet, wenn ein Eingabefeld in IE 11 fokussiert wird. Eine weitere Anmerkung: Die Platzhalterfarbe kann in IE 11 mit CSS nicht angepasst werden.
Platzhalter sind wie der Freund, der auftaucht, wenn alles perfekt ist, aber verschwindet, wenn man ihn am dringendsten braucht. Koppeln Sie ein Eingabefeld mit einem schönen, kontrastreichen Label. Labels sind nicht unzuverlässig und sind ihren Eingabefeldern 100 % der Zeit treu.
Die Nielsen Norman Group hat einen ausführlichen Artikel, der erklärt , warum Platzhalter in Formularfeldern schädlich sind.
Nicht tun: Ein Label durch ein anderes Attribut oder Element ersetzen
Wenn kein Label vorhanden ist, suchen einige Screenreader nach angrenzendem Text und kündigen diesen stattdessen an. Dies ist ein Treffer-oder-Miss-Ansatz, da es möglich ist, dass ein Screenreader keinen Text zum Ankündigen findet.
Der folgende Code-Schnipsel stammt von einer echten Website. Das Label wurde durch ein <span>-Element ersetzt, das semantisch nicht mit dem Eingabefeld verbunden ist.
<div>
<span>Card number</span>
<div>
<input type="text" value="" id="cardNumber" name="cardNumber" maxlength="40">
</div>
</div>
Der obige Code sollte zur Gewährleistung der Barrierefreiheit neu geschrieben werden, indem der Span durch ein Label mit for="cardNumber" ersetzt wird. Dies ist bei weitem die einfachste und robusteste Lösung, die den meisten Menschen zugute kommt.
Obwohl ein Label durch einen Span mit einer id, deren Wert mit dem aria-labelledby-Attribut des Eingabefeldes übereinstimmt, ersetzt werden könnte, können die Leute den Span nicht anklicken, um das Eingabefeld zu fokussieren, wie es ein Label ermöglicht. Es ist immer am besten, die Kraft nativer HTML-Elemente zu nutzen, anstatt sie neu zu erfinden. Die Liebesgeschichte zwischen nativen Eingabe- und Label-Elementen muss nicht neu geschrieben werden! Sie ist so, wie sie ist, großartig.
Nicht tun: Interaktive Elemente in Labels platzieren
Nur einfacher Text sollte in einem Label enthalten sein. Vermeiden Sie die Einfügung von Dingen wie Überschriften oder interaktiven Elementen wie Links. Nicht alle Screenreader kündigen ein Label korrekt an, wenn es etwas anderes als einfachen Text enthält. Wenn jemand ein Eingabefeld anklicken möchte, um es zu fokussieren, aber dieses Label einen Link enthält, kann er versehentlich auf den Link klicken.
<form>
<div>
<!-- Don't do this -->
<input type="checkbox" id="t-and-c" name="name" />
<label for="t-and-c">I accept the <a href="https://link.com">terms and conditions</a></label>
</div>
<div>
<!-- Try this -->
<input type="checkbox" id="t-and-c2" name="name" />
<label for="t-and-c2">I accept the terms and conditions.</label>
<span>Read <a href="https://link.com">terms and conditions</a></span>
</div>
</form>
Beispiele aus der Praxis
Ich finde immer, dass Beispiele aus der Praxis mir helfen, etwas richtig zu verstehen. Ich habe das Web durchsucht und Beispiele für Labels und Eingabefelder aus einer beliebten Komponentenbibliothek und Website gefunden. Unten erkläre ich, wo die Elemente Mängel aufweisen und wie sie verbessert werden können, um eine bessere Kopplung zu gewährleisten.
Komponentenbibliothek: Material
MaterialUI ist eine React-Komponentenbibliothek, die auf Googles Designsystem basiert. Sie beinhaltet eine Textfeldeingabekomponente mit einem schwebenden Label-Muster, das für viele Designer und Entwickler zu einem beliebten Standard geworden ist.

Das Klicken auf das Eingabefeld fühlt sich flüssig an und sieht gut aus. Aber das ist das Problem. Seine Qualitäten sind hauptsächlich oberflächlich.
Zum Zeitpunkt der Erstellung dieses Beitrags sind einige Probleme, die ich mit dieser Komponente festgestellt habe:
- Es gibt keine Option, das Label außerhalb des Eingabefeldes zu haben, um eine größere Interaktionsfläche für das Fokussieren des Eingabefeldes zu bieten.
- Es gibt eine Option, einen Hinweis hinzuzufügen, wie wir zuvor gesehen haben. Leider ist der Hinweis nur durch Nähe mit dem Eingabefeld verbunden und nicht durch eine übereinstimmende
idundaria-describedby. Das bedeutet, dass nicht alle Screenreader die Hilfsnachricht mit dem Eingabefeld verknüpfen können. - Das Label befindet sich im DOM hinter dem Eingabefeld, wodurch die visuelle Reihenfolge falsch ist.
- Das leere Eingabefeld sieht aus, als wäre es bereits ausgefüllt, zumindest solange es nicht aktiv ist.
- Das Label gleitet nach oben, wenn auf das Eingabefeld geklickt wird, was es für diejenigen ungeeignet macht, die reduzierte Bewegungen bevorzugen.
Adam Silver erklärt auch , warum schwebende Labels problematisch sind und geht in eine detaillierte Kritik an Materials Text-Eingabefeld-Design.
Website: Huffpost
Die Huffpost-Website enthält Artikel mit einem Newsletter-Anmeldeformular.

Zum Zeitpunkt der Erstellung dieses Blogbeitrags könnte das von Huffpost verwendete E-Mail-Eingabefeld von einer Reihe von Verbesserungen profitieren.
- Das Fehlen eines Labels bedeutet eine kleinere Klick- oder Tippfläche. Anstelle eines Labels gibt es ein
aria-label-Attribut am Eingabefeld. - Die Schriftgröße des
placeholderund der Eingabefeldwerte beträgt winzige 11 Pixel, was schwer zu lesen sein kann. - Das gesamte Eingabefeld verschwindet ohne JavaScript, was bedeutet, dass die Leute keine Möglichkeit haben, sich für den Newsletter anzumelden, wenn JavaScript deaktiviert oder fehlerhaft ist.
Schlussbemerkungen
Eine überraschende Anzahl von Menschen hat Schwierigkeiten, Informationen in schlecht konstruierte Eingabefelder einzugeben. Zu dieser Liste gehören Menschen mit kognitiven, motorischen und körperlichen Behinderungen, Autismus-Spektrum-Störungen, Hirnverletzungen und Sehbehinderungen. Andere Menschen, die Schwierigkeiten haben, sind diejenigen, die es eilig haben, eine schlechte Verbindung haben, ein kleines Gerät benutzen, ein altes Gerät benutzen und mit digitalen Formularen nicht vertraut sind, unter vielen anderen.
Darüber hinaus gibt es zahlreiche Gründe, warum JavaScript fehlschlagen oder in einem Browser deaktiviert sein kann, was bedeutet, dass Eingabefelder funktionsunfähig oder völlig unzugänglich werden. Es gibt auch Menschen, die voll und ganz in der Lage sind, eine Webseite anzuzeigen, die aber möglicherweise eine Tastatur zusammen mit einem Screenreader verwenden.
Die Botschaft, die ich vermitteln möchte, ist, dass glückliche Label- und Eingabefeld-Paare entscheidend sind. Es spielt keine Rolle, ob Ihr Formular schön ist, wenn es unbrauchbar ist. Ich wette, fast jeder füllt lieber ein hässliches, aber einfach zu bedienendes Formular aus als ein hübsches, das Probleme verursacht.
Danksagung
Ich möchte den folgenden Personen herzlich für ihre Hilfe bei diesem Beitrag danken: Eric Eggert, Adam Silver, Dion Dajka und Kitty Giraudel. Ihr gebündeltes Wissen über Barrierefreiheit ist eine Macht, mit der man rechnen muss!
Fußnoten
- 1 Der Datepicker ist in iOS 14 tatsächlich gut unterstützt und sehr gut. Man könnte sich vorstellen, dass eine macOS-Version am Horizont auftaucht. ⮑
Oben im Artikel steht, dass man mit Labels immer explizit sein soll. Was ist, wenn man das so macht? Würde das nicht die beste Lesbarkeit im Markup bieten? Oder mögen Screenreader das nicht?
Tatsache ist, dass die Qualität der Barrierefreiheit von impliziten Labels von verschiedenen Experten für Barrierefreiheit umstritten ist. An mehreren Stellen fand ich Behauptungen, dass explizite Labels am besten sind. Zum Beispiel Eric Eggerts Artikel über Labeling von Steuerelementen.
Bezüglich des frühen Punktes zur Quellreihenfolge für
inputs undlabels, ich war unter dem Eindruck, dasslabels nicht fokussiert werden können… so etwas wie ein introvertierter Kerl und seine extrovertierte Freundin… ;) Wenn man also durch das Dokument tabuliert, würde ein reiner Tastaturnutzer niemals mit dem fokussiertenlabelenden, unabhängig davon, ob es vor oder nach dem zugehörigeninputstand.Richtig! Labels können nicht durch normale Tabulator-Navigation fokussiert werden, aber sie können von Screenreader-Benutzern fokussiert werden. Bitte siehe Leonie Watsons Beitrag für einen großartigen Überblick über den Unterschied zwischen Screenreader- und Tastaturfokus.
Toller Beitrag, Amber. Ich habe eine schnelle Frage:
Was genau wird ein Screenreader hier ankündigen?
In meinem „Keine interaktiven Elemente in Labels platzieren“-Codepen-Beispiel liest VoiceOver für das Eingabefeld, bei dem das Label einen Link enthält, „Ich akzeptiere die und 1 weiteren Artikel“.
Dies ist nur ein Beispiel und die Ergebnisse können je nach Screenreader variieren. Leider kann ich nicht mit allen testen.
Beste Visualisierung aller Zeiten. Das hat meinen Tag gerettet, Amber.
Danke, Skythe!
Startdatum (TT-MM-JJJJ)
Tun Sie das nicht. Das bedeutet, wenn Sie auf „Startdatum“ klicken, wird das Feld fokussiert, aber wenn Sie auf den Datumsformat-Text klicken, wird es nicht fokussiert. Das ist ohne guten Grund verwirrend. Packen Sie alles in das Label.
Tolle Erklärung, und ich liebe die Cartoons!
Danke, Dom!
Soweit ich weiß, ist Dragon die einzige AT, die keine Labels verarbeitet, die das Feld umschließen. Vorausgesetzt, wir gehen nicht zurück zum IE5-Bug (oder war es IE6? Oder IE4?).
Eric Wright hat dies behandelt (und gezeigt, wie frustrierend es sein kann), und obwohl seine Folien von einem Vortrag aus dem Jahr 2019 nicht online sind, habe ich ein Foto mit der relevanten Notiz erhalten.
Andernfalls scheinen die nativen Sprachsteuerungen von Windows und macOS nichts dagegen zu haben.
Immer noch ein Grund, es zu vermeiden, aber auch wissenswert, wie groß der Umfang des Problems insgesamt ist.
Ich wünschte, es gäbe eine Möglichkeit, das Label eines Eingabefelds in CSS anzusprechen.
Nicht ganz Teil der Absicht dieses Artikels, aber erwähnenswert ist, dass das
name-Attribut wichtig ist. Wie auf MDN beschrieben, wird es „vom Server verwendet, um die Felder in Formular-Submits zu identifizieren.“Leider wird ein implizites Label nicht von allen assistiven Technologien korrekt verarbeitet, auch wenn für und id-Attribute verwendet werden. Daher ist es immer die beste Idee, ein explizites Label anstelle eines impliziten Labels zu verwenden.
wird auch verhindert, dass der Fokus auf das Eingabefeld springt, wenn auf das Label geklickt wird?
Anstatt (TT-MM-JJJJ) zu verwenden, können Sie „Numerischer Tag-Monat-Jahr. Wie: 12-02-2021“ verwenden, um es beschreibender zu gestalten, anstatt davon auszugehen, dass jemand weiß, was TT-MM-JJJJ bedeutet.
Hallo, ich lerne, wie man HTML, CSS und Javascript schreibt. Der Grund, warum ich hierher kam, war zu lernen, wie man ein Label und ein Eingabefeld auf meiner Webseite zentriert, über einem Bild. Ich mag es, einen Rahmen um alle Elemente als visuelle Referenz zu legen. Aber ich kenne nicht viele Tricks. Können Sie eine gute Seite zum Erlernen von CSS empfehlen?
Hallo Danny! Wir haben einen fantastischen (wenn ich das so sagen darf) Leitfaden zum Zentrieren von Dingen mit CSS, den Sie sich vielleicht ansehen möchten. :)
Hallo. Danke für diesen Artikel. Etwas, mit dem ich mich herumgeschlagen habe, ist, wie man eine angemessene Überschrift für eine Reihe von Kontrollkästchen bereitstellt, die sowohl in Stil als auch in Funktion mit den Labels für andere Felder übereinstimmt, und ich habe mich gefragt, ob Sie mir dabei helfen könnten.
Nehmen wir an, ich habe ein Pizza-Bestellformular mit einer Reihe von Fragen. Die meisten werden Typfelder mit einem Label sein, das beschreibt, welche Informationen eingegeben werden sollen, z. B. Vorname. Nachname usw. Nehmen wir an, eine Frage, z. B. Beläge, erfordert, dass ein Benutzer eine (oder mehrere) Optionen aus einer Reihe von Kontrollkästchen auswählt. Ich verstehe, dass jede Option/jedes Kontrollkästchen sein eigenes Label hat, das direkt mit ihm verbunden ist, um die verschiedenen Belag-Optionen zu beschreiben, z. B. Parmesan, Ananas, Peperoni usw., soweit so gut.
Aber ich möchte eine Überschrift für die gesamte Reihe von Kontrollkästchen, d. h. „Beläge“. Visuell sollte diese Überschrift/dieses Gruppenlabel dem Stil und Gewicht der Labels für die anderen Eingabefelder entsprechen und dieselbe Funktion für Screenreader bieten.
Die konventionelle Weisheit würde vorschlagen, die Kontrollkästchen in einem fieldset zu gruppieren und eine legend mit dem Wert „Beläge“ hinzuzufügen, aber legends werden oft mit einer größeren Schriftgröße angezeigt, was dieser „Überschrift“ zu viel Gewicht verleiht. Die Frage nach den Belägen ist von gleicher Bedeutung wie Vorname, Nachname usw., daher sollte die Überschrift für die Frage nach den Belägen das gleiche Gewicht haben wie die Labels für die anderen Felder.
Um die Styling-Probleme zu lösen, habe ich einfach ein Element erstellt und mit CSS den Stil der anderen Feldlabels angepasst. Was ich wissen muss, ist, wie man eine funktionale Assoziation für Screenreader zwischen diesem Span-Element und jedem der separat beschrifteten Beläge-Kontrollkästchen, die es einführt, bereitstellt.
Anfangs dachte ich, Ihr Vorschlag von „aria-labelledBy=“…“” würde das tun, aber jedes Kontrollkästchen hat bereits sein eigenes Label, also schätze ich, nicht. Irgendwelche Gedanken?
Hallo John, deine Idee, ein fieldset und eine legend zu verwenden, ist richtig. Wenn Sie sicherstellen, dass die legend das allererste Kind des fieldset ist, benötigen Sie keine zusätzlichen
aria-Attribute, um die Assoziation zwischen den Eingabefeldern und der legend zu erstellen. Sie können dann CSS verwenden, um das Problem des visuellen Gewichts zu lösen.Wenn Sie
legendundfieldsetaus irgendeinem Grund nicht verwenden können (z. B. weil Sie zusätzliche umschließende Elemente oder eine andere Struktur benötigen), können Sie die gleiche Semantik grob erreichen, indem Sierole="group"einemdivzuweisen, das die Eingabefelder umschließt, undaria-labelledbyverwenden, um ihm ein Label von einem anderen Element zuzuweisen. Zum BeispielDies sollte dazu führen, dass Screenreader das „Gruppenlabel“ genauso ankündigen, wie sie es bei der legend eines fieldset tun würden.
Beachten Sie, dass die Verwendung nativer HTML-Elemente wahrscheinlich eine bessere/breitere Unterstützung durch assistierende Technologien hat.
Es gibt noch einen weiteren Nachteil bei impliziten Assoziationen von Labels und Steuerelementen, den ich heute gefunden habe – zumindest für Buttons in Chrome/Edge macht es den gesamten Labelbereich klickbar und nicht nur den sichtbaren Button. Es gibt Wege, dies zu umgehen, aber ich würde nicht empfehlen, einen Button in ein Label zu verschachteln!