Aufbau einer React-Komponente
Meine Vorstellung davon, wie jede React-Komponente aussehen sollte
421
8 min.
Der SST-Standard legt Anforderungen an die Semantik, die Barrierefreiheit und die Funktionslogik von Tabellen fest.
<caption> angegeben. Falls vorhanden, ist <caption> das erste Element innerhalb von <table>. Eine Tabellenbeschriftung macht den Zweck der Tabelle verständlicher, garantiert aber für sich allein keine SEO-Verbesserung.<thead> gruppiert Zeilen mit Spaltenüberschriften. Ein Browser oder Dokumentgenerator kann diese Gruppe beim seitenweisen Druck wiederholen; das tatsächliche Verhalten hängt vom Druckmodul und den Seiteneinstellungen ab.<tbody>-Elemente gruppieren Datenzeilen. Mehrere <tbody>-Gruppen werden verwendet, wenn Zeilen in logische Abschnitte gegliedert sind. Eine Tabelle enthält höchstens eine <thead>- und eine <tfoot>-Sektion.<tfoot> enthält Summen- oder Ergebniszeilen. Nach dem aktuellen HTML-Modell wird es nach den Zeilengruppen der Tabelle platziert; CSS stellt es als Tabellenfußgruppe dar. Ältere Beispiele mit <tfoot> vor <tbody> sollten nicht als aktuelle Markup-Regel behandelt werden.<tr> definiert eine Zeile, <th> eine Kopfzelle und <td> eine Datenzelle. <th> und <td> müssen der tatsächlichen Rolle des Inhalts entsprechen und dürfen nicht allein nach dem gewünschten visuellen Stil gewählt werden.<colgroup> kennzeichnet eine Gruppe von Spalten und wird nach <caption> und vor den Zeilengruppen platziert.<col> beschreibt eine oder mehrere Spalten innerhalb von <colgroup>. Das Attribut span legt fest, wie viele Spalten das Element umfasst.<colgroup> <col>-Elemente, wird deren Anzahl mit span an <col> angegeben. Alternativ kann span direkt an einem leeren <colgroup> ohne untergeordnete <col>-Elemente gesetzt werden.<col> und <colgroup> lassen sich Spaltenbreiten und Hintergründe festlegen. Die darauf anwendbaren CSS-Eigenschaften sind begrenzt; beispielsweise richten text-align und padding an <col> keinen Text aus und legen keine Zellinnenabstände fest.<th> oder <td> einen deckenden Hintergrund, ist die Farbe von <col> möglicherweise nicht sichtbar. Spaltenrahmen, die über <col> gesetzt werden, werden nur bei zusammenfallenden Rahmen angezeigt.<th scope="col"> und eine Zeilenüberschrift mit <th scope="row"> ausgezeichnet. Das Attribut scope ordnet eine Kopfzelle den zugehörigen Daten zu.scope="rowgroup" und scope="colgroup" verwendet, sofern die Tabellenstruktur diesen Gruppen entspricht.scope möglicherweise nicht aus. Überschriften und Datenzellen werden dann explizit über eindeutige id-Werte an <th> und die entsprechenden headers-Werte an <td> verknüpft.Beispiel einfacher Zeilen- und Spaltenüberschriften:
<table>
<caption>Projektbeteiligte</caption>
<thead>
<tr>
<th scope="col">Feld</th>
<th scope="col">Wert</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Benutzername</th>
<td>Alexej</td>
</tr>
</tbody>
</table><th> und <td> festgelegt. padding an einer Tabellenzeile <tr> steuert nicht die Innenabstände ihrer Zellen.border-collapse: collapse fasst benachbarte Zellrahmen zu einem gemeinsamen Raster zusammen. Bei border-collapse: separate werden Rahmen und Abstände dazwischen getrennt behandelt.empty-cells: show und empty-cells: hide steuern die Darstellung von Rahmen und Hintergründen leerer Zellen nur bei border-collapse: separate. Die Eigenschaft entfernt keine Zelle aus der Tabelle und legt nicht fest, was fehlende Daten bedeuten.<table>, <tr>, <th> und <td> behalten ihr natives Tabellen-Anzeigemodell, wenn der Inhalt tatsächlich Zeilen und Spalten darstellt.display einer Tabellenzeile auf flex oder grid geändert, ändert sich der Layoutalgorithmus: Die Zellen dieser Zeile nehmen nicht mehr am gemeinsamen Tabellenraster teil, sodass Spalten über mehrere Zeilen hinweg nicht mehr ausgerichtet sein können.text-align: start und text-align: end statt uneingeschränkt left und right verwendet.table-layout: fixed eignet sich, wenn Spaltenbreiten vorhersehbarer verteilt werden sollen und für die Tabelle selbst eine Breite ungleich auto festgelegt ist.<col> festgelegte Breiten bestimmt, danach durch Breiten der Zellen in der ersten Zeile. Der verbleibende Platz wird auf die übrigen Spalten verteilt.overflow-x: auto auf einen separaten Container begrenzt. Die Containerbreite muss durch den übergeordneten Bereich eingeschränkt sein.<table>-Element behält seine native Tabellendarstellung. display: block wird nicht als Ersatz für einen Overflow-Container verwendet: Eine Änderung des Anzeigetyps kann die Zeilenaufteilung und gemeinsame Spaltenausrichtung beeinträchtigen.-webkit-overflow-scrolling: touch ist keine Grundvoraussetzung für beschleunigtes Scrollen unter iOS und iPadOS 13 oder neuer. Auf dem iPhone kann die Eigenschaft einen Stacking Context erzeugen. Sie bleibt nur bestehen, wenn sie für ältere Zielsysteme nachweislich erforderlich ist und Nebenwirkungen geprüft wurden.Beispiel für einen scrollbaren Container:
<div
class="table-scroll"
role="region"
aria-label="Monatliche Umsatzübersicht"
tabindex="0"
>
<table class="data-table data-table--wide">
<caption>Monatliche Umsatzübersicht</caption>
<colgroup>
<col class="data-table__month">
<col span="2" class="data-table__metrics">
</colgroup>
<thead>
<tr>
<th scope="col">Monat</th>
<th scope="col">Bestellungen</th>
<th scope="col">Umsatz</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Januar</th>
<td>120</td>
<td>360.000 ₽</td>
</tr>
<tr>
<th scope="row">Februar</th>
<td>145</td>
<td>435.000 ₽</td>
</tr>
</tbody>
<tfoot>
<tr>
<th scope="row">Gesamt</th>
<td>265</td>
<td>795.000 ₽</td>
</tr>
</tfoot>
</table>
</div>.table-scroll {
max-width: 100%;
overflow-x: auto;
}
.data-table {
width: 100%;
border-collapse: collapse;
}
.data-table--fixed {
table-layout: fixed;
}
.data-table--separate {
border-collapse: separate;
empty-cells: hide;
}
.data-table--wide {
min-width: 42rem;
}
.data-table__month {
width: 40%;
}
.data-table__metrics {
background-color: #f5f5f5;
}
.data-table th,
.data-table td {
padding: 0.75rem;
border: 1px solid #ccc;
}
.data-table th {
text-align: start;
}
.data-table td {
text-align: end;
}
.table-scroll:focus-visible {
outline: 2px solid currentColor;
outline-offset: 2px;
}Die Klasse data-table--wide wird nur verwendet, wenn Spalten eine festgelegte Mindestbreite benötigen; der Beispielwert 42rem wird an den Inhalt angepasst. Ein über <col> festgelegter Hintergrund bleibt sichtbar, solange er nicht von einem Zellen- oder Zeilenhintergrund überdeckt wird.
position: sticky auf <th>-Zellen innerhalb von <thead> angewendet wird.z-index hinzu. Andernfalls können Zeileninhalte durchscheinen oder Überschriften überdecken.position: sticky ist durch den nächstgelegenen Scroll-Container begrenzt. Bei einer Kombination aus fixiertem Tabellenkopf und horizontal scrollbarem Bereich wird das Verhalten sowohl beim Scrollen der Seite als auch innerhalb des Containers geprüft.Beispiel für fixierte Überschriften:
.data-table thead th {
position: sticky;
top: 0;
z-index: 1;
background-color: #fff;
}<thead> behält seine semantische Funktion als Kopfgruppe. Druck- und PDF-Engines können sie beim Umbruch einer langen Tabelle auf mehrere Seiten wiederholen; das Ergebnis wird in der Zielumgebung geprüft.caption, colgroup, thead, tbody-Gruppen und tfoot.scope oder id/headers werden mit einem Screenreader geprüft.<tbody>-Gruppen, verbundenen Zellen und mehrstufigen Überschriften werden geprüft, sofern solche Fälle vorkommen.table-layout: fixed sowie Fokus und Ebenen des fixierten Tabellenkopfs werden geprüft, sofern diese Funktionen verwendet werden.border-collapse-Wert geprüft; leere Werte dürfen die Bedeutung der Daten nicht verändern.Ähnliche Kategorien:
Meine Vorstellung davon, wie jede React-Komponente aussehen sollte
421
8 min.
Der SST-Standard legt Anforderungen an die Semantik, Barrierefreiheit und Funktionslogik von Registerkarten fest
62
6 min.
Der SSF-U-Standard legt Anforderungen an die Semantik, Barrierefreiheit und Funktionslogik von Vollbildmodus fest
248
2 min.
Der SSA-Standard legt Anforderungen an die Semantik, Barrierefreiheit und Funktionslogik von Akkordeons fest
258
2 min.
Analyse kritischer Fehler im Webdesign. Warum Slider, Autoplay und schwerfällige Seiten die Konversionsrate sowie die Platzierungen bei Google verschlechtern
232
2 min.
Der SSP-Standard legt Anforderungen an die Semantik, Barrierefreiheit und Funktionslogik von Paginierung fest
240
1 min.