Topics

Barrierefreie Implementierungsmuster für kartenförmige Komponenten

  • column

Kartenkomponenten werden häufig in Artikellisten und ähnlichen Layouts verwendet. Obwohl das Design einfach wirkt, gibt es bei Berücksichtigung von Barrierefreiheit überraschend viele tiefgreifende Designherausforderungen.

Betrachten wir ein typisches Kartenformat mit den folgenden Elementen von oben nach unten:

  • Bild
  • Artikeltitel
  • Artikel-Zusammenfassung
  • Link zu Details

– und überprüfen wir Implementierungsmuster für dieses vertikale Layout.

Wichtigste Designüberlegungen

1. Visuelle Reihenfolge und HTML-Struktur

Screenreader lesen den HTML-Code grundsätzlich in der Reihenfolge der Markup-Struktur vor. Die Erfolgskriterien 1.3.2 (Aussagekräftige Reihenfolge, Stufe A) der WCAG 2.0 sehen vor, dass die visuelle Reihenfolge mit der HTML-Reihenfolge übereinstimmen sollte.

Es ist jedoch nicht grundsätzlich ein WCAG-Verstoß, wenn man mit CSS die Reihenfolge ändert. Solange Inhalte verständlich bleiben, auch wenn die visuelle Reihenfolge von der HTML-Reihenfolge abweicht, ist dies kein Problem. Es ist wichtig, je nach Situation flexibel zu urteilen.

2. Umgang mit Bildern

Bilder auf Artikelkarten sind in vielen Fällen dekorativ. Wenn ein Artikeltitel vorhanden ist, ist der Inhalt bereits ausreichend vermittelt, daher ist es weniger notwendig, eine Bildbeschreibung vorzulesen.

Wenn das Bild als dekorativ behandelt wird, ist alt="" ausreichend.

<img src="thumbnail.jpg" alt="">

3. Beschriftung von Detaillinks

Allgemeine Texte wie "Weitere Informationen" sollten aus folgenden Gründen vermieden werden:

Visuelles Problem

Ohne Kontext ist nicht erkennbar, worauf sich der Link bezieht

Screenreader-Problem

Wenn die Linklisten-Funktion verwendet wird, werden alle Einträge mit „Weitere Details anzeigen" angezeigt und können nicht unterschieden werden

Probleme mit der Spracherkennung

Wenn mehrere identische Texte vorhanden sind, ist eine Auswahl nach Nummern erforderlich, was den Betrieb kompliziert macht.

Idealerweise sollte der Text wie „Weitere Details zu ○○ anzeigen" sein, sodass der Zweck allein durch den Link verständlich ist. Hier behandeln wir jedoch die Implementierungsmethode für den Fall, dass das Design „Weitere Details anzeigen" genau so reproduziert werden soll.

4. Klickbarer Bereich der Karte

Um die UX zu verbessern, ist es häufig wünschenswert, eine ganze Karte anklickbar zu machen. Es gibt mehrere Implementierungsmethoden, aber jede hat unterschiedliche Auswirkungen auf die Accessibility.

5. Soll die Karte ein article oder ein div sein?

Das hängt von der Art des Inhalts ab.

Fälle, in denen geeignet ist:

  • Der Karteninhalt funktioniert als eigenständiger Inhalt

Wenn ausreicht:

  • Funktioniert als einfache Gruppe von Links
  • Die Karte hat keine semantische Unabhängigkeit

Bei typischen Blog-Listen oder Produktlisten sind -Elemente angemessen. Wenn Sie jedoch mehrere -Elemente verwenden, wird empfohlen, jede Überschrift mit aria-labelledby oder aria-label identifizierbar zu machen, um die Landmark-Navigation in Screenreadern zu berücksichtigen (WCAG 2.4.6, Level AA).

Bei Verwendung von aria-labelledby achten Sie darauf, dass die IDs eindeutige Werte sind.

Visuelle Reihenfolge und HTML-Struktur

Muster 1: Visuelle und HTML-Reihenfolge stimmen überein

<article class="article-card" aria-labelledby="article-title">
  <img src="thumbnail.jpg" alt="">
  <h3 id="article-title"><a href="#" class="card-link">記事タイトル</a></h3>
  <p>記事の概要...</p>
  <a href="#" class="card-detail-link">
	  <span class="visually-hidden">記事タイトル:</span>詳細を見る
  </a>
</article>

Da die HTML-Reihenfolge vollständig mit der visuellen Reihenfolge übereinstimmt, ist es einfach und intuitiv.

Hinweis: Das erste Element in sollte idealerweise eine Überschrift sein, ist aber nicht zwingend erforderlich. Wenn die visuelle Reihenfolge Priorität hat, funktioniert dieses Muster problemlos.

Zusätzliches:

Spracherkennungssoftware (Dragon, Voice Control etc.) arbeitet auf der Grundlage von auf dem Bildschirm angezeigtem Text. Durch die Verwendung von visually-hidden (sr-only) wird der visuelle Text beibehalten und die Bedienung durch Spracherkennung wird möglich. Im Folgenden sind Implementierungsbeispiele für OK- und NG-Muster bei der Entsprechung von Link-Labels dargestellt.

<!-- 以下は可視テキストがアクセシブルな名前に含まれているのでOK -->
<a href="#" id="link-text" class="card-detail-link" aria-labelledby="link-text article-title">
  詳細を見る
</a>
<a href="#" aria-label="詳細を見る:記事タイトル">
  詳細を見る
</a>
<!-- 以下は可視テキストがアクセシブルな名前に含まれていないのでNG -->
<a href="#" class="card-detail-link" aria-labelledby="article-title">
  詳細を見る
</a>
<a href="#" class="card-detail-link" aria-label="記事タイトル">
  詳細を見る
</a>

Muster 2: Visuelle Reihenfolge mit CSS order anpassen

<article class="article-card" aria-labelledby="article-title">
  <h3 id="article-title"><a href="#">記事タイトル</a></h3>
  <p>記事の概要...</p>
  <a href="#" class="card-detail-link">
	  <span class="visually-hidden">記事タイトル:</span>詳細を見る
  </a>
  <img src="thumbnail.jpg" alt="">
</article>
.article-card {
  display: flex;
  flex-direction: column;
}

.article-card img {
  order: -1;
}

Da das erste Element von eine Überschrift ist, ist dies semantisch eine wünschenswertere Struktur.

Bei dekorativen Bildern ((alt="")) gibt es keine Auswirkungen auf die Lesereihenfolge (Bilder werden übersprungen).

Hinweis:

  • Falls das Bild bedeutungsvoll ist und ein alt-Attribut angegeben hat, ist diese Struktur nicht geeignet, da sich die visuelle Reihenfolge und die Lesereihenfolge unterscheiden
  • Die Tab-Reihenfolge der Tastatur folgt der HTML-Reihenfolge. Falls sich mehrere fokussierbare Elemente in der Karte befinden, überprüfen Sie, dass die Fokusreihenfolge den logischen Fluss nicht unterbricht.

Wenn der gesamte Kartenbereich anklickbar sein soll

Muster 3: Gesamte Karte mit Pseudo-Element anklickbar machen

Bei dieser Methode wird die gesamte Karte durch das Pseudo-Element des Titellinks abgedeckt, und "Weitere Details anzeigen" wird als visuelle Dekoration in einem dargestellt.

"Weitere Informationen" sollte nicht als mit tabindex=\"-1\" oder aria-hidden=\"true\" bleiben, da dies zu Störungen in der Linkliste von Screenreadern und im Element-Navigationsmodus führt. Es ist besser, es als zu implementieren.

<article class="article-card" aria-labelledby="article-title">
  <img src="thumbnail.jpg" alt="">
  <h3 id="article-title"><a href="#" class="card-link">記事タイトル</a></h3>
  <p>記事の概要...</p>
  <span class="card-detail-link">詳細を見る</span>
</article>
.article-card {
  position: relative;
}

.card-link::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
}

.card-link:focus-visible {
  outline: none;
}

.card-link:focus-visible::after {
  outline: 2px solid currentColor;
  outline-offset: 2px;
}

/* カード内に複数のリンクがある場合の例 */
.article-card a:not(.card-link) {
  position: relative;
  z-index: 2;
}

Vorteile:

  • Semantische Struktur beibehalten können
  • Natürlich vorlesen durch Bildschirmlesegeräte
  • Mehrere Links können in einer Karte platziert werden (Kategorie-, Tag-, Autor-Links usw.)

Nachteile:

  • z-index-Verwaltung erforderlich (jedoch kein Problem, wenn einmal eingestellt)

Muster 4: Die gesamte Karte mit umschließen

Bei dieser Methode wird die gesamte Karte zu einem Link, daher wird „Details anzeigen" natürlich zu .

<article class="article-card" aria-labelledby="article-title">
  <a href="#" class="card-link">
    <img src="thumbnail.jpg" alt="">
    <h3 id="article-title">記事タイトル</h3>
    <p>記事の概要...</p>
    <span class="card-detail-link">詳細を見る</span>
  </a>
</article>

Vorteile:

  • Einfache Implementierung
  • CSS-Anpassungen sind einfach

Nachteile:

  • Bei einigen Screenreadern kann der gesamte Text hintereinander vorgelesen werden (besonders bei VoiceOver wird es zu "Artikeltitel Artikelzusammenfassung ... Weitere Details anzeigen Link")
  • Mehrere Links können nicht in einer Karte platziert werden

Beispiele für verschiedene Muster

Fazit

Es gibt mehrere Ansätze zur Implementierung barrierefreier Kartenkomponenten. Das Wichtigste ist zu verstehen, dass es kein einziges Implementierungsmuster gibt und die optimale Lösung je nach Situation unterschiedlich ist.

Bei der Implementierung ist es wichtig, auf Folgendes zu achten.

  1. Wählen Sie eine Implementierung, die für die tatsächlichen Benutzer problematisch ist
  2. Berücksichtigen Sie die Bedeutung des Bildes, den Zweck der Karte und die Gesamtstruktur der Website
  3. Priorisieren Sie praktische und wartbare Implementierungen

Dieser Artikel wurde geschrieben von

Von DTP in die Web-Welt – und dann Markup, Frontend, Projektleitung und Accessibility alles gemeistert: ein "Technik-Weise". Seit den Anfangstagen von Liberogic vielseitig tätig und mittlerweile eine lebende Wissensquelle im Unternehmen. Derzeit fasziniert von der Frage "Können wir Accessibility-Umsetzung noch stärker mit KI unterstützen?" und erforscht Optimierungsmöglichkeiten durch gezieltes Prompt-Engineering. Technisch wie gedanklich immer noch in Entwicklung.

Futa

IAAP-zertifizierter Web Accessibility Specialist (WAS) / Markup Engineer / Frontend Engineer / Web Director

Artikel dieses Mitarbeiters ansehen

Zuverlässige Teamstruktur und schnelle Reaktionsfähigkeit sind unsere Stärken

Bei Liberogic werden erfahrene Mitarbeiter aktiv bei der Projektförderung eingesetzt, daher erhalten wir hohe Bewertungen von unseren Kunden.
Wir weisen Projektmanager und Direktoren ordnungsgemäß zu und bemühen uns, Projekte reibungslos zu leiten. Wir vermeiden unnötige Kostensteigerungen durch vollständige Bindung und verteilen Ressourcen optimal. Wir sind auch bekannt für die Schnelligkeit bei der Erfassung von Geschäftsinhalten bis zur Erstellung und Einreichung von Angeboten.

Bitte beachten Sie, dass wir keine SES-ähnliche Vor-Ort-Arbeit aktiv durchführen.

Sie können nahezu alle wichtigen Projektmanagement-Tools und Chat-Tools verwenden, wie Slack, Teams, Redmine, Backlog, Asana, Jira, Notion, Google Workspace, Zoom, Webex und mehr.

Haben Sie Schwierigkeiten mit der Umsetzung von Web-Accessibility?

Fallstudien