Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Paginierung

Dieses Cookbook-Muster demonstriert das Navigationsmuster, das zur Anzeige von Seitennummerierungen verwendet wird, bei dem der Benutzer zwischen Seiten mit Inhalten wie Suchergebnissen navigieren kann.

Links zu Seiten in einer paginierten Liste

Anforderungen

Das Paginierungs-Muster zeigt normalerweise Elemente in einer Reihe an. Um sicherzustellen, dass die Paginierung für Personen, die einen Screenreader verwenden, verständlich ist, kennzeichnen wir die Elemente als Liste innerhalb eines <nav>-Elements und verwenden dann CSS, um das Layout visuell als Reihe darzustellen.

In der Regel wird die Paginierungskomponente horizontal unterhalb des Inhalts zentriert.

Rezept

Klicken Sie auf "Play" in den untenstehenden Codeblöcken, um das Beispiel im MDN Playground zu bearbeiten:

html
<nav aria-label="pagination">
  <ul class="pagination">
    <li>
      <a href="">
        <span aria-hidden="true">&laquo;</span>
        <span class="visuallyhidden">previous set of pages</span>
      </a>
    </li>
    <li>
      <a href=""><span class="visuallyhidden">page </span>1</a>
    </li>
    <li>
      <a href="" aria-current="page">
        <span class="visuallyhidden">page </span>2
      </a>
    </li>
    <li>
      <a href=""> <span class="visuallyhidden">page </span>3 </a>
    </li>
    <li>
      <a href=""> <span class="visuallyhidden">page </span>4 </a>
    </li>
    <li>
      <a href="">
        <span class="visuallyhidden">next set of pages</span
        ><span aria-hidden="true">&raquo;</span>
      </a>
    </li>
  </ul>
</nav>
css
.visuallyhidden {
  border: 0;
  clip: rect(0 0 0 0);
  height: auto;
  margin: 0;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
}

nav {
  border-top: 1px solid #eeeeee;
  margin-top: 1em;
  padding-top: 0.5em;
  font: 1.2em sans-serif;

  display: flex;
  justify-content: center;
}

.pagination {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
}

.pagination li {
  margin: 0 1px;
}

.pagination a {
  display: block;
  padding: 0.5em 1em;
  border: 1px solid #999999;
  border-radius: 0.2em;
  text-decoration: none;
}

.pagination a[aria-current="page"] {
  background-color: #333333;
  color: white;
}

Getroffene Entscheidungen

Dieses Muster wird mithilfe von Flexbox erstellt – ein Flex-Container, der in einem anderen geschachtelt ist. Das <nav>-Element wird als Flex-Container festgelegt, damit wir die Liste mithilfe der justify-content-Eigenschaft zentrieren können.

Die Liste selbst wird ebenfalls zu einem Flex-Container, um die Elemente als Reihe darzustellen. Um die Elemente zu verteilen, können wir entweder einen margin auf die Flex-Elemente anwenden oder einen gap auf den Flex-Container hinzufügen.

css
.pagination {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  gap: 2px;
}

Barrierefreiheitsbedenken

Wir möchten sicherstellen, dass eine Person, die einen Screenreader verwendet, versteht, was diese Navigation bewirkt und wohin sie gelangt, wenn sie auf einen Link klickt. Dazu haben wir aria-label="pagination" auf dem <nav>-Element hinzugefügt.

Wir haben auch einige zusätzliche Inhalte hinzugefügt, die von einem Screenreader gelesen werden, aber visuell verborgen sind, und das aria-hidden-Attribut auf den Pagination-Pfeilen gesetzt.

Der Abschnitt "Siehe auch" am Ende dieses Dokuments enthält Links zu verwandten Themen der Barrierefreiheit.

Siehe auch