ARIA: `gridcell` Rolle
Die gridcell Rolle wird verwendet, um eine Zelle in einem grid oder treegrid zu erstellen. Sie soll die Funktionalität des HTML-Elements <td>
nachahmen und Informationen im Tabellenstil gruppieren.
<div role="gridcell">Potato</div>
<div role="gridcell">Cabbage</div>
<div role="gridcell">Onion</div>
Elemente, denen role="gridcell"
zugewiesen wurde, müssen untergeordnete Elemente eines Elements mit der Rolle row
sein.
<div role="row">
<div role="gridcell">Jane</div>
<div role="gridcell">Smith</div>
<div role="gridcell">496-619-5098</div>
…
</div>
Die erste Regel von ARIA ist: Wenn ein natürliches HTML-Element oder -Attribut die benötigten Semantiken und Verhaltensweisen bietet, verwenden Sie es anstelle einer Umwidmung eines Elements und dem Hinzufügen von ARIA. Verwenden Sie stattdessen das HTML-Element <td>
:
<td>Potato</td>
<td>Cabbage</td>
<td>Onion</td>
Beschreibung
gridcells
mit dynamisch hinzugefügten, verborgenen oder entfernten Reihen und Spalten
Jedes Element mit einer angewendeten role="gridcell"
sollte ARIA verwenden, um seine Ordnung in der Gruppierung im Tabellenstil zu beschreiben, sofern die Tabelle, das Raster oder das Baumraster die Möglichkeit hat, Zeilen und/oder Spalten dynamisch hinzuzufügen, zu verbergen oder zu entfernen.
Verwenden Sie aria-colindex
, um die Ordnung einer gridcell
in der Liste der Spalten zu beschreiben, und aria-rowindex
, um die Ordnung einer gridcell
in der Liste der Reihen zu beschreiben. Verwenden Sie aria-colcount
und aria-rowcount
auf dem übergeordneten Element mit angewendeter role="grid"
, um die Gesamtzahl der Spalten oder Reihen festzulegen.
Dieser Beispielcode demonstriert eine Gruppierung von Informationen im Tabellenstil, bei der die dritte und vierte Spalte entfernt wurden. aria-colindex
wird verwendet, um die Position der Reihen zu beschreiben und ermöglicht es einer Person, die unterstützende Technologie verwendet, zu erkennen, dass bestimmte Reihen entfernt wurden:
<div role="grid" aria-colcount="6">
<div role="rowgroup">
<div role="row">
<div role="columnheader" aria-colindex="1">First name</div>
<div role="columnheader" aria-colindex="2">Last name</div>
<div role="columnheader" aria-colindex="5">City</div>
<div role="columnheader" aria-colindex="6">Zip</div>
</div>
</div>
<div role="rowgroup">
<div role="row">
<div role="gridcell" aria-colindex="1">Debra</div>
<div role="gridcell" aria-colindex="2">Burks</div>
<div role="gridcell" aria-colindex="5">New York</div>
<div role="gridcell" aria-colindex="6">14127</div>
</div>
</div>
…
</div>
Beschreibung der Position von gridcells
, wenn die Gesamtstruktur unbekannt ist
In Situationen, in denen die Gruppierung der Inhalte im Tabellenstil keine Informationen über die Spalten und Reihen liefert, müssen gridcells
ihre Positionen programmatisch durch Verwendung von aria-describedby
beschrieben bekommen. Die für aria-describedby
angegebenen id
s sollten den übergeordneten Elementen entsprechen, die als Reihen und Spalten vorgesehen sind.
Durch den Verweis auf die übergeordneten Elemente mit angewandten Rollen von rowheader
oder columnheader
über aria-describedby
, kann unterstützende Technologie die Position und Beziehung des gridcell
-Elements zum Rest der Gruppierung von Inhalten im Tabellenstil verstehen.
Interaktive Rasters und Baumraster
Bearbeitbare Zellen
Sowohl <td>
-Elemente als auch Elemente mit der Rolle gridcell
können bearbeitbar gemacht werden, was eine Funktionalität ähnlich der Bearbeitung einer Tabellenkalkulation nachahmen kann. Dies geschieht durch Zuweisung des HTML contenteditable
-Attributs.
<td contenteditable="true">Notes</td>
<div role="gridcell" contenteditable="true">Item cost</div>
contenteditable
macht das Element, auf das es angewendet wird, fokussierbar über die Tab-Taste. Wenn eine gridcell
bedingt in einen Zustand umgeschaltet wird, in dem das Bearbeiten verboten ist, schalten Sie aria-readonly
auf dem gridcell
-Element um.
Erweiterbare Zellen
In einem treegrid können gridcells
erweiterbar gemacht werden, indem das Attribut aria-expanded
umgeschaltet wird. Beachten Sie, dass wenn dieses Attribut bereitgestellt wird, es nur für die individuelle gridcell
gilt.
Zugehörige WAI-ARIA Rollen, Zustände und Eigenschaften
grid
-
Kommuniziert, dass ein übergeordnetes Element eine tabellen- oder baumartige Gruppierung von Informationen ist.
row
-
Erforderlich, um zu kommunizieren, dass die
gridcell
Teil einer Reihe einer Gruppierung von Informationen im Tabellenstil ist. columnheader
-
Gibt an, welches Element der zugehörige Spaltenkopf ist.
aria-colindex
-
Identifiziert die Position eines Elements im Verhältnis zu den Spalten der restlichen Gruppierung von Informationen im Tabellenstil.
rowheader
-
Gibt an, welches Element der zugehörige Zeilenkopf ist.
aria-rowindex
-
Identifiziert die Position eines Elements im Verhältnis zu den Reihen der restlichen Gruppierung von Informationen im Tabellenstil.
Beispiele
Das folgende Beispiel erstellt eine Gruppierung von Informationen im Tabellenstil:
<h3 id="table-title">Jovian gas giant planets</h3>
<div role="grid" aria-describedby="table-title">
<div role="rowgroup">
<div role="row">
<div role="columnheader">Name</div>
<div role="columnheader">Diameter (km)</div>
<div role="columnheader">Length of day (hours)</div>
<div role="columnheader">Distance from Sun (10<sup>6</sup>km)</div>
<div role="columnheader">Number of moons</div>
</div>
</div>
<div role="rowgroup">
<div role="row">
<div role="gridcell">Jupiter</div>
<div role="gridcell">142,984</div>
<div role="gridcell">9.9</div>
<div role="gridcell">778.6</div>
<div role="gridcell">67</div>
</div>
</div>
<div role="rowgroup">
<div role="row">
<div role="gridcell">Saturn</div>
<div role="gridcell">120,536</div>
<div role="gridcell">10.7</div>
<div role="gridcell">1433.5</div>
<div role="gridcell">62</div>
</div>
</div>
</div>
Barrierefreiheitsbedenken
Die Unterstützung für gridcell
und bestimmte gridcell
-bezogene ARIA-Rollen und -Eigenschaften ist mit unterstützenden Technologien schlecht. Wenn möglich, verwenden Sie stattdessen HTML-Tabelle-Markup.
Beste Praktiken
Die erste Regel von ARIA ist: Wenn ein nativer HTML-Element oder -Attribut die Semantik und das Verhalten bietet, das Sie benötigen, verwenden Sie es anstelle der Umwidmung eines Elements und dem Hinzufügen einer ARIA-Rolle, eines Zustandes oder einer Eigenschaft, um es zugänglich zu machen. Daher wird empfohlen, natürliches HTML-Tabellen-Markup zu verwenden, anstatt die Form und Funktionalität einer Tabelle mit ARIA und JavaScript nachzubilden.