<tr> HTML-элемент строки таблицы
Базовая поддержка Широко доступно *
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в разных версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
* Некоторые части этой функции могут поддерживаться на разных уровнях.
Элемент <tr> HTML задаёт строку ячеек таблицы. Ячейки строки можно создать с помощью элементов <td> (ячейка данных) и <th> (ячейка заголовка).
Попробуйте
<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;
}
Атрибуты
Этот элемент включает глобальные атрибуты.
Устаревшие атрибуты
Следующие атрибуты устарели, поэтому их не следует использовать. Они описаны ниже только для справки при обновлении существующего кода и в исторических целях.
align-
Задаёт горизонтальное выравнивание каждой ячейки строки. Возможные перечисленные значения:
left,center,right,justifyиchar. Если поддерживается, значениеcharвыравнивает текстовое содержимое по символу, указанному в атрибутеchar, и со смещением, заданным атрибутомcharoff. Вместо этого используйте CSS-свойствоtext-align, так как этот атрибут устарел. bgcolor-
Задаёт цвет фона каждой ячейки строки. Значение — цвет HTML: либо 6-значный шестнадцатеричный код RGB с префиксом
#, либо ключевое слово цвета. Другие значения<color>CSS не поддерживаются. Вместо этого используйте CSS-свойствоbackground-color, так как этот атрибут устарел. char-
Задаёт выравнивание содержимого каждой ячейки строки по символу. Обычно в качестве значения указывают точку (
.), например, для выравнивания чисел или денежных значений. Если дляalignзадано значение, отличное отchar, этот атрибут игнорируется. charoff-
Задаёт смещение содержимого ячейки строки в символах относительно символа выравнивания, указанного атрибутом
char. valign-
Задаёт вертикальное выравнивание каждой ячейки строки. Возможные перечисленные значения:
baseline,bottom,middleиtop. Вместо этого используйте CSS-свойствоvertical-align, так как этот атрибут устарел.
Примечания по использованию
- Элемент
<tr>может быть дочерним только для элемента<thead>,<tbody>или<tfoot>. - Если
<tr>размещён непосредственно внутри родительского элемента<table>, подразумевается родительский элемент<tbody>, и браузеры добавят<tbody>в разметку. - Неявный родительский элемент
<tbody>поддерживается, только если у<table>нет дочерних элементов<tbody>, а также если<tr>указан после любых элементов<caption>,<colgroup>и<thead>. - Псевдоклассы CSS
:nth-of-type,:first-of-typeи:last-of-typeчасто полезны для выбора нужного набора строк и их ячеек данных и заголовков (элементов<td>и<th>). - Когда
<tr>включён непосредственно в<table>, браузер добавляет в разметку<tbody>, поэтому CSS-селекторы, такие какtable > tr, могут работать не так, как ожидается, или не работать вовсе.
Примеры
Полный пример таблицы, в котором представлены общепринятые стандарты и лучшие практики, см. в статье <table>.
Базовая структура строк
В этом примере показана таблица с четырьмя строками и тремя столбцами, где первый столбец содержит заголовки для ячеек данных строк.
HTML
Для создания четырёх строк таблицы используются четыре элемента <tr>. Каждая строка содержит три ячейки — одну ячейку заголовка (<th>) и две ячейки данных (<td>), — образуя три столбца. Атрибут scope, заданный для каждой ячейки заголовка, указывает, к каким ячейкам она относится; в этом примере — ко всем ячейкам данных в 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
Псевдокласс CSS :nth-of-type используется для выбора каждой odd строки и задания для неё более тёмного оттенка background-color, создавая так называемый эффект «зебры». Чередование цвета фона упрощает разбор и чтение строк данных таблицы — представьте, что строк и столбцов много и нужно найти данные в определённой строке. Кроме того, ячейки заголовков строк (элементы <th>) выделяются с помощью background-color, чтобы отличать их от ячеек данных (элементов <td>).
tr:nth-of-type(odd) {
background-color: #eeeeee;
}
tr th[scope="row"] {
background-color: #d6ecd4;
}
Результат
Строка заголовков
В этом примере базовая таблица из предыдущего примера дополнена строкой заголовков, добавленной в начало таблицы.
HTML
В начало таблицы добавлена ещё одна строка (<tr>) с ячейками заголовков столбцов (<th>), задающими заголовок для каждого столбца. Эта строка помещена в группирующий элемент <thead>, чтобы обозначить её как заголовок таблицы. Для каждой ячейки заголовка (<th>) в этой строке заголовков добавлен атрибут scope, явно указывающий, что ячейка заголовка относится ко всем ячейкам своего столбца, даже если эти ячейки находятся в <tbody>.
<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
CSS почти не изменился по сравнению с предыдущим примером, кроме нескольких дополнительных стилей, выделяющих «строку заголовков», чтобы заголовки столбцов отличались от остальных ячеек.
tr:nth-of-type(odd) {
background-color: #eeeeee;
}
tr th[scope="col"] {
background-color: #505050;
color: white;
}
tr th[scope="row"] {
background-color: #d6ecd4;
}
Результат
Сортировка строк
Встроенных методов сортировки строк (элементов <tr>) в элементе <table> нет. Однако с помощью Array.prototype.sort(), Node.removeChild и Node.appendChild в JavaScript можно реализовать пользовательскую функцию sort() для сортировки <tr> элементов в объекте HTMLCollection.
HTML
В этой простой таблице для обозначения её основной части и включения трёх строк (элементов <tr>) с данными (элементами <td>) используется элемент <tbody>. В результате получается один столбец с числами в порядке убывания.
<table>
<tbody>
<tr>
<td>3</td>
</tr>
<tr>
<td>2</td>
</tr>
<tr>
<td>1</td>
</tr>
</tbody>
</table>
JavaScript
В приведённом ниже коде JavaScript созданная функция sort() добавляется к элементу <tbody>, чтобы сортировать ячейки таблицы по возрастанию значений и соответствующим образом обновлять отображение.
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));
Результат
Сортировка строк нажатием на ячейки заголовков
В этом примере базовая таблица из предыдущего примера дополнена интерактивной сортировкой, работающей независимо для нескольких столбцов.
HTML
К каждой строке (элементу <tr>) в теле таблицы (элементе <tbody>) добавлена ещё одна ячейка данных (элемент <td>), чтобы создать второй столбец с буквами в порядке возрастания. С помощью элемента <thead> перед основной частью добавлена секция заголовков, содержащая строку заголовков с ячейками заголовков таблицы (элементами <th>). В приведённом ниже коде JavaScript эти ячейки заголовков становятся интерактивными: нажатие на них запускает соответствующую сортировку.
<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
Для каждого заголовка таблицы (элемента <th>) каждой таблицы <table> в document добавляется обработчик события нажатия. Он сортирует все строки (элементы <tr>) элемента <tbody> на основе содержимого ячеек данных (элементов <td>) в этих строках.
Примечание: Это решение предполагает, что элементы <td> содержат обычный текст без дочерних элементов.
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);
});
}
}
Результат
Примечание: Чтобы таблицей было удобно пользоваться и она была доступна, ячейка заголовка каждого сортируемого столбца должна распознаваться как кнопка сортировки. Кроме того, для каждого столбца необходимо визуально обозначить текущий порядок сортировки — по возрастанию или убыванию — и указать его с помощью атрибута aria-sort. Дополнительные сведения см. в руководстве по практикам разработки ARIA, в разделе пример сортируемой таблицы.
Техническая сводка
| Категории содержимого | Нет |
|---|---|
| Допустимое содержимое | Ноль или более элементов <td> и/или <th>; также разрешены элементы поддержки скриптов (<script> и <template>). |
| Пропуск тегов | Открывающий тег обязателен. Закрывающий тег можно опустить, если за элементом <tr> сразу следует элемент <tr> или если строка является последним элементом в родительской группе строк таблицы — элементе <thead>, <tbody> или <tfoot>. |
| Допустимые родительские элементы | <table> (только если у таблицы нет дочернего элемента <tbody>, и даже в этом случае — только после любых элементов <caption>, <colgroup> и <thead>); в остальных случаях родительским элементом должен быть <thead>, <tbody> или <tfoot>. |
| Неявная роль ARIA | row |
| Допустимые роли ARIA | Любые |
| Интерфейс DOM | HTMLTableRowElement |
Спецификации
| Спецификация |
|---|
| HTML> # the-tr-element> |
Совместимость с браузерами
| Компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari на iOS | Samsung Internet | WebView Android | WebView на iOS | |
tr |
1 | 12 | 1 | ≤12.1 | 1 | 18 | 4 | ≤12.1 | 1 | 1.0 | 4.4 | 1 |
align |
1 | 12 | 1 | 15 | 3 | 18 | 4 | 14 | 2 | 1.0 | 4.4 | 2 |
bgcolor |
1 | 12 | 1 | ≤15 | 1 | 18 | 4 | ≤14 | 1 | 1.0 | 4.4 | 1 |
char |
НетНачиная с Chrome 1, атрибут можно задать, но это не повлияет на результат. |
12–79Начиная с Edge 79, атрибут можно задать, но это не повлияет на результат. |
Нет | НетНачиная с Opera 15, атрибут можно задать, но это не повлияет на результат. |
НетНачиная с Safari 3, атрибут можно задать, но это не повлияет на результат. |
НетНачиная с Chrome для Android 18, атрибут можно задать, но это не повлияет на результат. |
Нет | НетНачиная с Opera для Android 14, атрибут можно задать, но это не повлияет на результат. |
НетНачиная с Safari на iOS 2, атрибут можно задать, но это не повлияет на результат. |
НетНачиная с Samsung Internet 1.0, атрибут можно задать, но это не повлияет на результат. |
НетНачиная с WebView Android 4.4, атрибут можно задать, но это не повлияет на результат. |
НетНачиная с WebView на iOS 2, атрибут можно задать, но это не повлияет на результат. |
charoff |
НетНачиная с Chrome 1, атрибут можно задать, но это не повлияет на результат. |
12–79Начиная с Edge 79, атрибут можно задать, но это не повлияет на результат. |
Нет | НетНачиная с Opera 15, атрибут можно задать, но это не повлияет на результат. |
НетНачиная с Safari 3, атрибут можно задать, но это не повлияет на результат. |
НетНачиная с Chrome для Android 18, атрибут можно задать, но это не повлияет на результат. |
Нет | НетНачиная с Opera для Android 14, атрибут можно задать, но это не повлияет на результат. |
НетНачиная с Safari на iOS 2, атрибут можно задать, но это не повлияет на результат. |
НетНачиная с Samsung Internet 1.0, атрибут можно задать, но это не повлияет на результат. |
НетНачиная с WebView Android 4.4, атрибут можно задать, но это не повлияет на результат. |
НетНачиная с WebView на iOS 2, атрибут можно задать, но это не повлияет на результат. |
valign |
1 | 12 | 1 | 15 | 3 | 18 | 4 | 14 | 2 | 1.0 | 4.4 | 2 |
См. также
- Изучение основ таблиц HTML
-
<caption>,<col>,<colgroup>,<table>,<tbody>,<td>,<tfoot>,<th>,<thead>: другие элементы, связанные с таблицами -
background-color: CSS-свойство для задания цвета фона каждой ячейки строки -
border: CSS-свойство для управления границами ячеек строк -
text-align: CSS-свойство для горизонтального выравнивания содержимого каждой ячейки строки -
vertical-align: CSS-свойство для вертикального выравнивания содержимого каждой ячейки строки -
:nth-of-type,:first-of-type,:last-of-type: псевдоклассы CSS для выбора нужных ячеек строк
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/tr