<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 July 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 mithilfe einer Mischung aus <td>
(Datenzelle) und <th>
(Headerzelle) Elementen festgelegt werden.
Probieren Sie es aus
<table>
<caption>
Alien football stars
</caption>
<tr>
<th scope="col">Player</th>
<th scope="col">Gloobles</th>
<th scope="col">Za'taak</th>
</tr>
<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>
</table>
th,
td {
border: 1px solid rgb(160 160 160);
padding: 8px 10px;
}
th[scope="col"] {
background-color: #505050;
color: #fff;
}
th[scope="row"] {
background-color: #d6ecd4;
}
td {
text-align: center;
}
tr:nth-of-type(even) {
background-color: #eee;
}
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 sind unten dokumentiert, um beim Aktualisieren vorhandenen Codes als Referenz zu dienen und nur aus historischem Interesse.
align
Veraltet-
Gibt die horizontale Ausrichtung jeder Zellreihe an. Die möglichen enumerierten Werte sind
left
,center
,right
,justify
undchar
. Wenn es unterstützt wird, richtet der Wertchar
den textuellen Inhalt am Zeichen aus, das imchar
-Attribut definiert ist, und am Offset, das durch dascharoff
-Attribut definiert ist. Verwenden Sie stattdessen dietext-align
CSS-Eigenschaft, da dieses Attribut veraltet ist. bgcolor
Veraltet-
Definiert die Hintergrundfarbe jeder Zellreihe. Der Wert ist eine HTML-Farbe, entweder ein 6-stelliger hexadezimaler RGB-Code, der durch ein
#
vorangestellt ist, oder ein Farb-Keyword. Andere CSS<color>
Werte werden nicht unterstützt. Verwenden Sie stattdessen diebackground-color
CSS-Eigenschaft, da dieses Attribut veraltet ist. char
Veraltet-
Gibt die Ausrichtung des Inhalts zu einem Zeichen jeder Zellreihe an. Typische Werte dafür sind ein Punkt (
.
), wenn Sie versuchen, Zahlen oder Geldbeträge auszurichten. Wennalign
nicht aufchar
gesetzt ist, wird dieses Attribut ignoriert. charoff
Veraltet-
Gibt die Anzahl der Zeichen an, die der Zellreiheninhalt vom Ausrichtungszeichen aus, das durch das
char
-Attribut spezifiziert wird, versetzt werden soll. valign
Veraltet-
Gibt die vertikale Ausrichtung jeder Zellreihe an. Die möglichen enumerierten Werte sind
baseline
,bottom
,middle
undtop
. Verwenden Sie stattdessen dievertical-align
CSS-Eigenschaft, da dieses Attribut veraltet ist.
Nutzungshinweise
- Das
<tr>
-Element ist nur als Kindelement eines<thead>
,<tbody>
oder<tfoot>
-Elements gültig. - Wenn das
<tr>
-Element als direktes Kindelement seines übergeordneten<table>
-Elements platziert ist, wird das<tbody>
-Elternteil implizit angenommen, und Browser fügen das<tbody>
dem Markup hinzu. - Das implizierte
<tbody>
-Elternteil wird nur unterstützt, wenn die<table>
-Element sonst keine Kindelemente<tbody>
aufweist und nur, wenn<tr>
nach allen<caption>
,<colgroup>
und<thead>
-Elementen aufgenommen wird. - Die CSS-Pseudoklassen
:nth-of-type
,:first-of-type
und:last-of-type
sind oft nützlich, um die gewünschten Sätze von Zeilen sowie deren Daten- und Headerzellen (<td>
und<th>
-Elemente) auszuwählen. - Wenn ein
<tr>
direkt als Kindelement der<table>
aufgenommen wird, wie es der Browser dem Markup ein<tbody>
hinzufügt, funktionieren CSS-Selektoren wietable > tr
möglicherweise nicht wie erwartet oder überhaupt nicht.
Beispiele
Sehen Sie <table>
für ein vollständiges Tabellenbeispiel, das gängige Standards und bewährte Praktiken einführt.
Grundlegende Zeilenerstellung
Dieses Beispiel demonstriert eine Tabelle mit vier Zeilen und drei Spalten, wobei die erste Spalte Header für die Zeilen-Datenzellen 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>
) - und erstellt so drei Spalten. Das scope
-Attribut, das in jeder Headerzelle gesetzt ist, gibt an, auf welche Zellen sie sich beziehen, was in diesem Beispiel alle Datenzellen innerhalb der row
sind.
<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
-Pseudoklasse wird verwendet, um jede odd
-Zeile auszuwählen und den background-color
dieser Zeilen auf einen leicht dunkleren Ton zu setzen, wodurch ein sogenannter "Zebra"-Streifeneffekt entsteht. Diese abwechselnden Hintergründe erleichtern das Parsen und Lesen der Datenreihen der Tabelle — stellen Sie sich vor, Sie hätten viele Zeilen und Spalten und versuchen, bestimmte Daten in einer bestimmten Zeile zu finden. Darüber hinaus sind die Zeilen-Headerzellen (<th>
-Elemente) mit einem background-color
hervorgehoben, um sie von den Datenzellen (<td>
-Elementen) zu unterscheiden.
tr:nth-of-type(odd) {
background-color: #eee;
}
tr th[scope="row"] {
background-color: #d6ecd4;
}
Ergebnis
Header-Zeile
Dieses Beispiel erweitert die einfache Tabelle aus dem vorherigen Beispiel durch Hinzufügen einer Kopfzeile als erste Zeile der Tabelle.
HTML
Eine zusätzliche Tabellenzeile (<tr>
) wird als erste Zeile der Tabelle hinzugefügt, mit Spalten-Header-Zellen (<th>
), die einen Header für jede Spalte bereitstellen. Wir platzieren diese Zeile in einem <thead>
-Gruppierungselement, um anzuzeigen, dass dies der Header der Tabelle ist. Das scope
-Attribut wird jeder Headerzelle (<th>
) innerhalb dieser Kopfzeile hinzugefügt, um ausdrücklich anzugeben, dass jede Headerzelle sich auf alle Zellen innerhalb ihrer eigenen Spalte bezieht, auch wenn sich diese Zellen im <tbody>
befinden.
<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 gegenüber dem vorherigen Beispiel, mit Ausnahme einiger zusätzlicher Stile, um die "Header-Zeile" hervorzuheben, sodass die Kopfzeilen der Spalten sich von den anderen Zellen abheben.
tr:nth-of-type(odd) {
background-color: #eee;
}
tr th[scope="col"] {
background-color: #505050;
color: #fff;
}
tr th[scope="row"] {
background-color: #d6ecd4;
}
Ergebnis
Sortieren von Zeilen
Es gibt keine nativen Methoden zum Sortieren der Zeilen (<tr>
-Elemente) eines <table>
. Aber mithilfe 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 Hauptbereich der Tabelle zu markieren und drei Zeilen (<tr>
-Elemente) mit Daten (<td>
-Elemente) einzuschließen, wodurch eine Spalte mit Zahlen in absteigender Reihenfolge erstellt wird.
<table>
<tbody>
<tr>
<td>3</td>
</tr>
<tr>
<td>2</td>
</tr>
<tr>
<td>1</td>
</tr>
</tbody>
</table>
JavaScript
Im unten stehenden JavaScript-Code ist die erstellte sort()
-Funktion an das <tbody>
-Element gekoppelt, damit die Tabellenspalten in der Reihenfolge steigender Werte sortiert und die Anzeige dementsprechend aktualisiert wird.
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
Sortieren von Zeilen durch Klicken auf Headerzellen
Dieses Beispiel erweitert die einfache Tabelle 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. Mithilfe des <thead>
-Elements wird ein Kopfbereich vor dem Hauptbereich hinzugefügt, um eine Kopfzeile mit Tabellenheaderzellen (<th>
-Element) vorzustellen. Diese Headerzellen werden im unten stehenden JavaScript-Code verwendet, um sie anklickbar zu machen und dann das entsprechende Sortieren beim Aktivieren pro 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 Klick-Ereignishandler wird an jeden Tabellenheader (<th>
-Element) jeder <table>
im document
hinzugefügt; es sortiert alle Zeilen (<tr>
-Elemente) des <tbody>
basierend auf dem Inhalt der Datenzellen (<td>
-Elemente), die in den Zeilen enthalten sind.
Hinweis:
Diese Lösung geht davon aus, dass die <td>
-Elemente mit Rohtext ohne untergeordnete Elemente befü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 benutzbar und zugänglich zu sein, muss die Headerzelle jeder sortierbaren Spalte als Sortierschaltfläche identifizierbar sein, und jede muss visuell und mit dem aria-sort
-Attribut angeben, ob die Spalte aktuell aufsteigend oder absteigend sortiert ist. Siehe das ARIA Authoring Practices Guide sortierbare Tabellenbeispiel für weitere Informationen.
Technische Zusammenfassung
Inhaltskategorien | Keine |
---|---|
Zulässiger Inhalt |
Null oder mehr <td> und/oder
<th> -Elemente;
Skript-unterstützende Elemente
(<script> und
<template> ) sind ebenfalls erlaubt.
|
Tag-Auslassung |
Start-Tag ist obligatorisch. End-Tag kann weggelassen werden, wenn das
<tr> -Element unmittelbar gefolgt wird von einem
<tr> -Element oder wenn die Zeile das letzte Element
in ihrem übergeordneten Tabellengruppe-Element (<thead> ,
<tbody> oder <tfoot> )
ist.
|
Zulässige Eltern |
<table> (nur wenn die Tabelle keine untergeordneten
<tbody> -Elemente hat und selbst dann nur nach allen
<caption> ,
<colgroup> und
<thead> -Elementen); andernfalls muss der Elternteil
ein <thead> , <tbody> oder
<tfoot> -Element sein.
|
Implizierte ARIA-Rolle |
row
|
Zulässige 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 Zellreihe festzulegenborder
: CSS-Eigenschaft, um die Umrandungen der Zellreihen zu steuerntext-align
: CSS-Eigenschaft, um den Inhalt jeder Zellreihe horizontal zu alignierenvertical-align
: CSS-Eigenschaft, um den Inhalt jeder Zellreihe vertikal zu alignieren:nth-of-type
,:first-of-type
,:last-of-type
: CSS-Pseudoklassen, um die gewünschten Zellreihen auszuwählen