Checkboxen in Etiketten?

8

Ich sehe überall im Internet zwei Möglichkeiten, wie Leute Checkboxen kodieren, welche ist richtig?

  1. <input id="a" type="checkbox"/><label for="a">checkbox</label>
  2. <label for="b"><input id="b" type="checkbox">checkbox</label>

Beide funktionieren in Chrome gut, ist ein Browser mehr Cross-over als der andere? Gibt es einen Unterschied?

DEMO

    
qwertymk 04.03.2012, 13:23
quelle

2 Antworten

9

Beide sind vollkommen korrekt, gültig und zugänglich, solange Sie input und label mit for/id -Attributen verknüpfen, auch wenn input direkt in das Label passt (siehe die beste Antwort auf die Frage, die verknüpft ist von @AramKocharyan und mein Kommentar dort)

Screenreader lesen den zugehörigen Etiketteninhalt, wenn sich der Benutzer auf ein Formularelement (Eingabe, Auswahl oder Textbereich) konzentriert. Wenn sie in einer Form sind, werden sie wahrscheinlich nur Etiketten, Legenden und Knöpfe lesen (ich meine zurücksetzen, senden, Bild oder Knopf), weil JAWS und Ähnliches spezielle Modi haben; ungefähr das Ziel ist, ein Formular zu füllen, nicht den Inhalt wie mit dem Rest einer Webseite zu lesen.

Sie finden oft Formulare mit einem label auf der linken Seite, input auf der Mitte und etwas Hilfe auf der rechten Seite:

%Vor%
  • Bei einem input außerhalb des Elements label wird der Hinweis beispielsweise mit einem span codiert. Es wird von Screenreadern nicht gehört, da es nicht Teil einer Schaltfläche label oder Senden ist.
  • Mit einem input innerhalb eines label -Elements können Sie sowohl das Label als auch den Hinweis in das Element label einfügen:

    %Vor%

Auf diese Weise wird der Hinweis zusammen mit dem echten Etikett an den AT-Benutzer gelesen.
Hinweis: Natürlich werden Sie die strong und span anders gestalten, sagen bzw.. fett rechtsbündig und kursiv linksbündig. span ist für das Styling nicht notwendig (einfach label stylen und die Hälfte der Regeln für strong abbrechen), aber es ist einfacher (einfacher?):)

Es ist so nützlich für Fehler wie für Hinweise:

%Vor%


%Vor%

Auf diese Weise wird der Fehler an Bildschirmleser gelesen (und Farben, die sie nicht sehen oder kaum sehen können, sind nicht die einzige Möglichkeit, Informationen mit Hilfe dieses Textes an sie zu übermitteln).

    
FelipeAls 04.03.2012, 14:21
quelle
1

Entweder ist richtig.

Labels können Inline-Elemente enthalten (außer anderen Labels). Eingabeelemente sind Inline-Elemente.

imho unten: Jedenfalls würde ich die Checkbox nicht in das Etikett stecken, da es mir irgendwie komisch vorkommt. Labels sollen die Eingabefelder beschriften, eine Beschreibung enthalten, sie nicht enthalten.

    
m02ph3u5 04.03.2012 13:30
quelle

Tags und Links