<tr>: Элемент строки таблицы
Базовая Широко доступная
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.
Элемент <tr> HTML определяет строку ячеек в таблице. Ячейки строки можно определить с помощью комбинации элементов <td> (ячейка данных) и <th> (ячейка заголовка).
Попробуйте
Атрибуты
Этот элемент включает глобальные атрибуты.
Устаревшие атрибуты
Следующие атрибуты устарели и не должны использоваться. Они документированы ниже для справки при обновлении существующего кода и только для ознакомления с историей.
-
alignУстарел -
Указывает горизонтальное выравнивание каждой ячейки строки. Возможные значения перечисления —
left,center,right,justify, иchar. В поддерживаемых браузерах значениеcharвыравнивает текстовое содержимое по символу, определённому в атрибутеchar, и по смещению, определённому в атрибутеcharoff. Используйте свойство CSStext-alignвместо этого атрибута, так как он устарел. -
bgcolorУстарел -
Определяет цвет фона каждой ячейки строки. Значение — HTML-цвет; либо 6-значный шестнадцатеричный код RGB, префикс которого '
#', либо ключевое слово цвета. Другие значения CSS<color>не поддерживаются. Используйте свойство CSSbackground-colorвместо этого атрибута, так как он устарел. -
charУстарел -
Указывает выравнивание содержимого ячейки строки по символу. Типичные значения включают точку (
.) при попытке выравнивания чисел или денежных значений. Если атрибутalignне задан какchar, этот атрибут игнорируется. -
charoffУстарел -
Указывает количество символов для смещения содержимого ячейки строки от символа выравнивания, указанного в атрибуте
char. -
valignУстарел -
Указывает вертикальное выравнивание каждой ячейки строки. Возможные значения перечисления —
baseline,bottom,middle, иtop. Используйте свойство CSSvertical-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> <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> </table>
CSS
Псевдокласс CSS :nth-of-type используется для выбора каждой odd строки и установки background-color этих строк на немного более тёмный оттенок, создавая эффект «полос зебры». Это чередование фона облегчает чтение данных в таблице — представьте, у вас много строк и столбцов, и вам нужно найти данные в определенной строке. Кроме того, ячейки заголовка строки (<th>) выделяются background-color, чтобы отличить их от ячеек данных (<td>).
tr:nth-of-type(odd) { background-color: #eee; } tr th[scope="row"] { background-color: #d6ecd4; }
Результат
Строка заголовка
Этот пример расширяет базовую таблицу из предыдущего примера, добавив строку заголовка в качестве первой строки таблицы.
HTML
Дополнительная строка таблицы (<tr>) добавляется в качестве первой строки таблицы с ячейками заголовка столбца (<th>), предоставляя заголовок для каждого столбца. Мы помещаем эту строку в группирующий элемент <thead>, чтобы указать, что это заголовок таблицы. Атрибут scope добавляется к каждой ячейке заголовка (<th>) в этой строке заголовка, чтобы явно указать, что каждая ячейка заголовка относится ко всем ячейкам в своём столбце, даже если эти ячейки находятся в <tbody>.
<table> <tr> <th scope="col">Symbol</th> <th scope="col">Code word</th> <th scope="col">Pronunciation</th> </tr> <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> </table>
CSS
CSS почти не изменился по сравнению с предыдущим примером, за исключением некоторых дополнительных стилей для выделения «строки заголовка», чтобы заголовки столбцов выделялись на фоне других ячеек.
tr:nth-of-type(odd) { background-color: #eee; } tr th[scope="col"] { background-color: #505050; color: #fff; } tr th[scope="row"] { background-color: #d6ecd4; }
Результат
Сортировка строк
Для сортировки строк (элементов <tr> ) таблицы (<table> ) нет встроенных методов. Но с помощью Array.prototype.sort(), Node.removeChild и Node.appendChild можно реализовать пользовательскую sort() функцию на JavaScript для сортировки набора (HTMLCollection ) элементов <tr> .
HTML
В этой базовой таблице используется элемент <tbody> для обозначения тела таблицы и включения трёх строк (элементов <tr> ) с данными (элементы <td> ), создавая один столбец с числами в порядке убывания.
<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
В тело таблицы (<tbody> элемент) каждой строке (элемент <tr> ) добавляется дополнительная ячейка данных (элемент <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 ARIA Authoring Practices Guide по ссылке sortable table example.
Техническое резюме
| Категории контента | Нет |
|---|---|
| Разрешённое содержимое | Ноль или более элементов <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 | |
tr |
1 | 12 | 1 | ≤12.1 | 1 | 18 | 4 | ≤12.1 | 1 | 1.0 | 4.4 |
align |
1 | 12 | 1 | 15 | 3 | 18 | 4 | 14 | 2 | 1.0 | 4.4 |
bgcolor |
1 | 12 | 1 | ≤15 | 1 | 18 | 4 | ≤14 | 1 | 1.0 | 4.4 |
char |
1 | 12 | Нет | 15 | ≤4 | 18 | Нет | 14 | ≤3.2 | 1.0 | 4.4 |
charoff |
1 | 12 | Нет | 15 | ≤4 | 18 | Нет | 14 | ≤3.2 | 1.0 | 4.4 |
valign |
1 | 12 | 1 | 15 | 3 | 18 | 4 | 14 | 2 | 1.0 | 4.4 |
См. также
- Изучение: 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–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr