Navigation in Lists: Sein oder Nichtsein

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Wenn Sie googeln, ob Sie Listen als Markup für die Navigation auf Websites verwenden sollten, werden Sie keine Debatte finden. Jeder Artikel deutet darauf hin, dass Sie es tun sollten. Die überwiegende Mehrheit der Tutorials, die Sie lesen, wird Listen für die Navigation verwenden. Die überwiegende Mehrheit der Vorlagen, die Sie sehen, wird Listen für die Navigation verwenden. Aber ist dieses allgegenwärtige Markup-Muster absolut korrekt? Lassen Sie es uns herausfinden.

Hinweis: Stellen Sie sicher, dass Sie den Zusammenfassungsbeitrag darüber lesen, was wir nach diesem Beitrag über all dies gelernt haben.

Was Sie heute wahrscheinlich sehen werden

<nav>
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Clients</a></li>
    <li><a href="#">Contact Us</a></li>
  </ul>
</nav>

Oder vor HTML5 gäbe es kein <nav>-Tag, sondern <ul class="nav">

Alternative: Listenlose Navigation

<nav>
  <a href="#">Home</a>
  <a href="#">About</a>
  <a href="#">Clients</a>
  <a href="#">Contact Us</a>
</nav>

Eine alte Schlacht

2005: Bruce Lawson führt tatsächliche Forschung mit Screenreadern durch. Die Schlussfolgerung war, dass Listen am besten sind, aber es wurde mit der Kennzeichnung von Listen in Tabellen verglichen, was Sinn macht.

2007: Ich habe über listenlose Navigation gepostet und Dustin Brewer widersprach vehement, dass dies jemals verwendet werden sollte. Dustins Artikel spricht über Semantik, Barrierefreiheit und Screenreader, hat aber keine Forschung und erklärt nicht, warum die listenlose Navigation unsemantisch ist oder Screenreader-Probleme verursachen würde.

Reinhard Stebner betritt die Bühne

Im Januar 2011 sprach Reinhard bei einer Refresh-Veranstaltung in Baltimore und hinterließ anscheinend einen RIESIGEN Eindruck beim Publikum. Er ist komplett blind und spricht über Markup-Barrierefreiheit.

Reinhard schlägt vor, keine Listen für die Navigation zu verwenden, sondern stattdessen Divs und Spans.

Leah Vogely war bei der Veranstaltung und schreibt

Ich glaube, jeder im Raum kratzte sich am Kopf, als das gesagt wurde. Eines der ersten Dinge, die man beim Codieren lernt, ist, wie man eine Navigation strukturiert, und das geschieht normalerweise mit einer ungeordneten Liste. Diese Listenstruktur ist jedoch der Logik des Screenreaders nicht zuträglich. Das Span-Tag wird vom Screenreader nicht erkannt, daher ist es eine der Möglichkeiten, Ihren Inhalt für die Barrierefreiheit zu vereinfachen.

Ein weiterer Teilnehmer schreibt:

Divs und Spans sind der richtige Weg, da sie für Screenreader unsichtbar sind. Stebner tabulierte durch die viel zu vielen Listen auf mica.edu und sie gaben ihm keinerlei Hinweise darauf, wo er sich auf der Seite befand, und keine Informationen außer „Liste, 10 Elemente. Liste, 6 Elemente…“ Mit Divs und Spans ist der Inhalt sofort für die Screenreader verfügbar.

Jim Doran war auch dabei

Eine Navigationsstruktur, die lediglich eine Sammlung von Hyperlinks ist, in eine Liste zu packen, soll Screenreadern ermöglichen, zwischen jedem Link zu pausieren, anstatt alle Links als einen Satz zu lesen. Semantisch macht das Sinn. Wir verwenden HTML, um Inhalten aussagekräftiges Markup zuzuweisen – Dinge zu Listen zu machen, scheint eine gute Idee zu sein. Dennoch gibt es keine einfache Möglichkeit, eine Liste als eine Reihe von Links zu identifizieren, sodass eine Seite mit 12 Linkgruppen sehr verwirrend sein kann. Er demonstrierte dies mit Jaws.

Wir haben ARIA als eine Möglichkeit angesprochen, damit umzugehen, und anstatt Listen für Links zu verwenden, würde er gerne mehr <div> und <span>s sehen.

Reinhard Stebner hat es ziemlich deutlich gemacht. Er benutzt JAWS als Screenreader und Navigation in Listen macht es ihm schwerer.

VoiceOver

Alle bisher erwähnten Forschungen bezogen sich auf JAWS. Nach meinem Verständnis ist JAWS der beliebteste Screenreader. Es gibt auch den nativen VoiceOver, der auf OS X verfügbar ist. Bei meinen Tests navigiert VoiceOver auf genau die gleiche Weise, ob es sich in einer Liste befindet oder nicht. So wie Cross-Browser-Tests wichtig sind, sind auch Cross-Screenreader-Tests wichtig.

HTML5

Einige dieser Gespräche liegen vor der weit verbreiteten Verwendung von HTML5. HTML5 verfügt über das <nav>-Tag, das meiner Meinung nach das Semantik-Argument beilegt. Wenn Sie Navigation kennzeichnen, fügen Sie sie in ein <nav>-Tag ein. Anstelle von HTML5 oder wenn Sie einfach ein anderes Wrapperelement verwenden müssen, haben Sie die ARIA-Rolle: <div role="navigation">.

Update: Auf Nachfrage sollte man die ARIA-Rolle auf dem nav-Tag verwenden, auch wenn sie impliziert ist, da einige Browser sie nicht so anwenden, wie sie es sollten. Also <nav role="navigation">. Danke Dave!

Die Spezifikation

Sagt:

Ein Nav-Element muss keine Liste enthalten...

Und zeigt dann ein Beispiel für einen Navigationsabsatz.

Inline vs. Block

Keine Liste für die Navigation zu verwenden, bedeutet, dass die Links in einer Reihe angeordnet werden, anstatt wie bei einer Standardliste jeder in einer neuen Reihe. Ich persönlich finde das eine praktische leere Leinwand und genieße es, keine User-Agent-Stylesheet-Stile für Listen entfernen zu müssen. Sollten Sie möchten, dass Links wie eine Liste funktionieren, könnten Sie jederzeit die display-Eigenschaft für die Links über CSS ändern.

Also

Was denkst du? Sinnlose Verfolgung? Eine würdige Diskussion?

Ich persönlich bin schon eine ganze Weile listenfrei. Solange ich keine solide Forschung sehe, die das für dumm erklärt, bleibe ich dabei. Wie immer wäre es am besten, mehr Informationen von echten Screenreader-Benutzern wie Reinhard zu erhalten.

Und wenn wir weiterhin Listen verwenden, warum ist es immer eine ungeordnete Liste? Ich erinnere mich, wie Ryan Singer einmal deswegen ausgeflippt ist. Steht es nicht außer Frage, dass wir die Reihenfolge dieser Liste sehr bewusst gewählt haben?


Stellen Sie sicher, dass Sie den Zusammenfassungsbeitrag darüber lesen, was wir nach diesem Beitrag über all dies gelernt haben.