<tr>: Das Table-Row-Element
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
* Some parts of this feature may have varying levels of support.
Das <tr> HTML-Element definiert eine Zeile von Zellen in einer Tabelle. Die Zellen der Zeile können dann unter Verwendung einer Mischung aus <td> (Datenzelle) und <th> (Header-Zelle) Elementen eingerichtet werden.
Probieren Sie es aus
<table>
<caption>
Alien football stars
</caption>
<thead>
<tr>
<th scope="col">Player</th>
<th scope="col">Gloobles</th>
<th scope="col">Za'taak</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">TR-7</th>
<td>7</td>
<td>4,569</td>
</tr>
<tr>
<th scope="row">Khiresh Odo</th>
<td>7</td>
<td>7,223</td>
</tr>
<tr>
<th scope="row">Mia Oolong</th>
<td>9</td>
<td>6,219</td>
</tr>
</tbody>
</table>
th,
td {
border: 1px solid rgb(160 160 160);
padding: 8px 10px;
}
th[scope="col"] {
background-color: #505050;
color: white;
}
th[scope="row"] {
background-color: #d6ecd4;
}
td {
text-align: center;
}
tr:nth-of-type(even) {
background-color: #eeeeee;
}
table {
border-collapse: collapse;
border: 2px solid rgb(140 140 140);
font-family: sans-serif;
font-size: 0.8rem;
letter-spacing: 1px;
}
caption {
caption-side: bottom;
padding: 10px;
}
Attribute
Dieses Element enthält die globalen Attribute.
Veraltete Attribute
Die folgenden Attribute sind veraltet und sollten nicht verwendet werden. Sie werden hier nur zu Referenzzwecken dokumentiert, um bestehende Codes zu aktualisieren und aus historischem Interesse.
alignVeraltet-
Gibt die horizontale Ausrichtung jeder Zeilenzelle an. Die möglichen aufgezählten Werte sind
left,center,right,justifyundchar. Wenn unterstützt, richtet der Wertcharden Textinhalt am Zeichen aus, das imchar-Attribut definiert ist, und am durch dascharoff-Attribut definierten Versatz. Verwenden Sie stattdessen dietext-align-CSS-Eigenschaft, da dieses Attribut veraltet ist. bgcolorVeraltet-
Definiert die Hintergrundfarbe jeder Zeilenzelle. Der Wert ist eine HTML-Farbe; entweder ein 6-stelliger hexadezimaler RGB-Code, eingeleitet durch
#, oder ein Farb-Schlüsselwort. Andere CSS<color>-Werte werden nicht unterstützt. Verwenden Sie stattdessen diebackground-color-CSS-Eigenschaft, da dieses Attribut veraltet ist. charVeraltet-
Gibt die Ausrichtung des Inhalts an einem Zeichen jeder Zeilenzelle an. Typische Werte hierfür sind ein Punkt (
.), wenn versucht wird, Zahlen oder Geldwerte auszurichten. Wennalignnicht aufchargesetzt ist, wird dieses Attribut ignoriert. charoffVeraltet-
Gibt die Anzahl der Zeichen an, um die Zellinhalte der Zeile von dem durch das
char-Attribut angegebenen Ausrichtungszeichen zu versetzen. valignVeraltet-
Gibt die vertikale Ausrichtung jeder Zeilenzelle an. Die möglichen aufgezählten Werte sind
baseline,bottom,middleundtop. Verwenden Sie stattdessen dievertical-align-CSS-Eigenschaft, da dieses Attribut veraltet ist.
Verwendungshinweise
- Das
<tr>-Element ist nur als untergeordnetes Element eines<thead>,<tbody>oder<tfoot>-Elements gültig. - Wenn das
<tr>als direktes Kind seines übergeordneten<table>-Elements platziert wird, wird das<tbody>als übergeordnetes Element impliziert und Browser fügen das<tbody>dem Markup hinzu. - Das implizite
<tbody>-Element wird nur unterstützt, wenn die<table>anderweitig keine untergeordneten<tbody>-Elemente hat und nur, wenn das<tr>nach allen<caption>,<colgroup>und<thead>-Elementen eingefügt wird. - Die CSS-Pseudo-Klassen
:nth-of-type,:first-of-typeund:last-of-typesind oft nützlich, um die gewünschte Reihe von Zeilen und deren Daten- und Headerzellen (<td>und<th>Elemente) auszuwählen. - Wenn ein
<tr>als direktes Kind der<table>enthalten ist, da der Browser ein<tbody>dem Markup hinzufügt, funktionieren CSS-Selektoren wietable > trmöglicherweise nicht wie erwartet oder überhaupt nicht.
Beispiele
Siehe <table>, um ein vollständiges Tabellenbeispiel mit allgemeinen Standards und Best Practices zu erhalten.
Grundlegende Zeileneinrichtung
Dieses Beispiel demonstriert eine Tabelle mit vier Zeilen und drei Spalten, wobei die erste Spalte Header für die Datenzellen der Zeilen enthält.
HTML
Vier <tr>-Elemente werden verwendet, um vier Tabellenzeilen zu erstellen. Jede Zeile enthält drei Zellen - eine Headerzelle (<th>) und zwei Datenzellen (<td>), womit drei Spalten erstellt werden. Das scope-Attribut, das auf jeder Headerzelle festgelegt ist, gibt an, auf welche Zellen sie sich beziehen, in diesem Beispiel alle Datenzellen innerhalb der row.
<table>
<tbody>
<tr>
<th scope="row">A</th>
<td>Alfa</td>
<td>AL fah</td>
</tr>
<tr>
<th scope="row">B</th>
<td>Bravo</td>
<td>BRAH voh</td>
</tr>
<tr>
<th scope="row">C</th>
<td>Charlie</td>
<td>CHAR lee</td>
</tr>
<tr>
<th scope="row">D</th>
<td>Delta</td>
<td>DELL tah</td>
</tr>
</tbody>
</table>
CSS
Die CSS :nth-of-type-Pseudo-Klasse wird verwendet, um jede ungerade Zeile auszuwählen und die background-color dieser Zeilen auf einen etwas dunkleren Ton zu setzen, was einen sogenannten "Zebrastreifen"-Effekt erzeugt. Dieser wechselnde Hintergrund macht die Datenzeilen in der Tabelle einfacher zu analysieren und zu lesen - man stelle sich vor, es gäbe viele Zeilen und Spalten und man versuche, einige Daten in einer bestimmten Zeile zu finden. Zusätzlich werden die Zeilenkopfzellen (<th>-Elemente) mit einer background-color hervorgehoben, um sie von den Datenzellen (<td>-Elemente) zu unterscheiden.
tr:nth-of-type(odd) {
background-color: #eeeeee;
}
tr th[scope="row"] {
background-color: #d6ecd4;
}
Ergebnis
Kopfzeile
Dieses Beispiel erweitert die Basistabelle aus dem vorherigen Beispiel, indem eine Kopfzeile als erste Zeile der Tabelle hinzugefügt wird.
HTML
Eine zusätzliche Tabellenzeile (<tr>) wird als erste Zeile der Tabelle mit Spaltenkopfzellen (<th>) hinzugefügt, um jeder Spalte einen Header zu geben. Wir platzieren diese Zeile in einem <thead>-Gruppierungselement, um anzuzeigen, dass dies der Kopf der Tabelle ist. Das scope-Attribut wird jeder Headerzelle (<th>) innerhalb dieser Kopfzeile hinzugefügt, um explizit anzugeben, dass sich jede Headerzelle auf alle Zellen innerhalb ihrer eigenen Spalte bezieht, auch wenn diese Zellen im <tbody> sind.
<table>
<thead>
<tr>
<th scope="col">Symbol</th>
<th scope="col">Code word</th>
<th scope="col">Pronunciation</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">A</th>
<td>Alfa</td>
<td>AL fah</td>
</tr>
<tr>
<th scope="row">B</th>
<td>Bravo</td>
<td>BRAH voh</td>
</tr>
<tr>
<th scope="row">C</th>
<td>Charlie</td>
<td>CHAR lee</td>
</tr>
<tr>
<th scope="row">D</th>
<td>Delta</td>
<td>DELL tah</td>
</tr>
</tbody>
</table>
CSS
Das CSS ist fast unverändert zum vorherigen Beispiel, abgesehen von einigen zusätzlichen Stilen, um die "Kopfzeile" hervorzuheben, sodass die Header der Spalten von den anderen Zellen auffallen.
tr:nth-of-type(odd) {
background-color: #eeeeee;
}
tr th[scope="col"] {
background-color: #505050;
color: white;
}
tr th[scope="row"] {
background-color: #d6ecd4;
}
Ergebnis
Zeilen sortieren
Es gibt keine nativen Methoden zum Sortieren der Zeilen (<tr>-Elemente) eines <table>. Aber durch die Verwendung von Array.prototype.sort(), Node.removeChild und Node.appendChild kann eine benutzerdefinierte sort()-Funktion in JavaScript implementiert werden, um eine HTMLCollection von <tr>-Elementen zu sortieren.
HTML
Ein <tbody>-Element wird in dieser Basistabelle verwendet, um den Tabellenkörperschnitt zu markieren und drei Zeilen (<tr>-Elemente) mit Daten (<td>-Elemente) einzuschließen, die eine Spalte mit Zahlen in absteigender Reihenfolge erstellen.
<table>
<tbody>
<tr>
<td>3</td>
</tr>
<tr>
<td>2</td>
</tr>
<tr>
<td>1</td>
</tr>
</tbody>
</table>
JavaScript
Im folgenden JavaScript-Code wird die erstellte sort()-Funktion dem <tbody>-Element zugeordnet, sodass sie die Tabellenzellen in aufsteigender Reihenfolge nach Wert sortiert und die Anzeige entsprechend aktualisiert.
HTMLTableSectionElement.prototype.sort = function (cb) {
Array.from(this.rows)
.sort(cb)
.forEach((e) => this.appendChild(this.removeChild(e)));
};
document
.querySelector("table")
.tBodies[0].sort((a, b) => a.textContent.localeCompare(b.textContent));
Ergebnis
Zeilen sortieren mit einem Klick auf Headerzellen
Dieses Beispiel erweitert die Basistabelle aus dem vorherigen Beispiel, indem das Sortieren interaktiv und unabhängig für mehrere Spalten gemacht wird.
HTML
Eine zusätzliche Datenzelle (<td>-Element) wird jeder Zeile (<tr>-Element) innerhalb des Tabellenkörpers (<tbody>-Element) hinzugefügt, um eine zweite Spalte mit Buchstaben in aufsteigender Reihenfolge zu erstellen. Mit dem <thead>-Element wird ein Kopfbereich vor dem Körperbereich eingeführt, um eine Kopfzeile mit Tabellenkopfzellen (<th>-Element) einzuführen. Diese Kopfzellen werden im folgenden JavaScript-Code verwendet, um sie klickbar zu machen und die entsprechende Sortierung bei jedem Klick auszuführen.
<table>
<thead>
<tr>
<th>Numbers</th>
<th>Letters</th>
</tr>
</thead>
<tbody>
<tr>
<td>3</td>
<td>A</td>
</tr>
<tr>
<td>2</td>
<td>B</td>
</tr>
<tr>
<td>1</td>
<td>C</td>
</tr>
</tbody>
</table>
JavaScript
Ein Klickereignishandler wird jedem Tabellenkopf (<th>-Element) jeder <table> im document hinzugefügt; er sortiert alle Zeilen (<tr>-Elemente) des <tbody> basierend auf den Inhalten der Datenzellen (<td>-Elemente), die in den Zeilen enthalten sind.
Hinweis:
Diese Lösung geht davon aus, dass die <td>-Elemente durch reinen Text ohne Tochterelemente gefüllt sind.
const allTables = document.querySelectorAll("table");
for (const table of allTables) {
const tBody = table.tBodies[0];
const rows = Array.from(tBody.rows);
const headerCells = table.tHead.rows[0].cells;
for (const th of headerCells) {
const cellIndex = th.cellIndex;
th.addEventListener("click", () => {
rows.sort((tr1, tr2) => {
const tr1Text = tr1.cells[cellIndex].textContent;
const tr2Text = tr2.cells[cellIndex].textContent;
return tr1Text.localeCompare(tr2Text);
});
tBody.append(...rows);
});
}
}
Ergebnis
Hinweis:
Um verwendbar und zugänglich zu sein, muss die Kopfzelle jeder sortierbaren Spalte als Sortierschaltfläche erkennbar sein und jede muss definieren, ob die Spalte derzeit aufsteigend oder absteigend sortiert ist, sowohl visuell als auch mit dem aria-sort-Attribut. Weitere Informationen finden Sie im ARIA Authoring Practices Guide, im Beispiel für sortierbare Tabellen.
Technische Zusammenfassung
| Inhaltskategorien | Keine |
|---|---|
| Erlaubter Inhalt |
Null oder mehr <td> und/oder
<th> Elemente;
script-unterstützende Elemente
(<script> und
<template>) sind ebenfalls erlaubt.
|
| Tag-Auslassung |
Start-Tag ist obligatorisch. Das End-Tag kann weggelassen werden, wenn das
<tr>-Element direkt von einem anderen
<tr>-Element gefolgt wird oder wenn die Zeile das letzte Element
in ihrem übergeordneten Tabellengruppen-Element (<thead>,
<tbody> oder <tfoot>)
ist.
|
| Erlaubte Eltern |
<table> (nur wenn die Tabelle kein untergeordnetes
<tbody>-Element hat, und selbst dann nur nach eventuell
vorhandenen <caption>,
<colgroup> und
<thead> Elementen); andernfalls muss das übergeordnete
Element ein <thead>, <tbody> oder
<tfoot>-Element sein.
|
| Implizite ARIA-Rolle |
row
|
| Erlaubte ARIA-Rollen | Beliebig |
| DOM-Schnittstelle | [`HTMLTableRowElement`](/de/docs/Web/API/HTMLTableRowElement) |
Spezifikationen
| Specification |
|---|
| HTML> # the-tr-element> |
Browser-Kompatibilität
Siehe auch
- Lernen: Grundlagen von HTML-Tabellen
<caption>,<col>,<colgroup>,<table>,<tbody>,<td>,<tfoot>,<th>,<thead>: Andere tabellenbezogene Elementebackground-color: CSS-Eigenschaft, um die Hintergrundfarbe jeder Zeilenzelle festzulegenborder: CSS-Eigenschaft zur Steuerung der Grenzen von Zeilenzellentext-align: CSS-Eigenschaft, um den Inhalt jeder Zeilenzelle horizontal auszurichtenvertical-align: CSS-Eigenschaft, um den Inhalt jeder Zeilenzelle vertikal auszurichten:nth-of-type,:first-of-type,:last-of-type: CSS-Pseudo-Klassen, um die gewünschten Zeilenzellen auszuwählen