Spec-Zone.ru › HTML

<tr>: Элемент строки таблицы

Базовая Широко доступная

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Элемент <tr> HTML определяет строку ячеек в таблице. Ячейки строки можно определить с помощью комбинации элементов <td> (ячейка данных) и <th> (ячейка заголовка).

Попробуйте

Атрибуты

Этот элемент включает глобальные атрибуты.

Устаревшие атрибуты

Следующие атрибуты устарели и не должны использоваться. Они документированы ниже для справки при обновлении существующего кода и только для ознакомления с историей.

align Устарел

Указывает горизонтальное выравнивание каждой ячейки строки. Возможные значения перечисления — left, center, right, justify, и char. В поддерживаемых браузерах значение char выравнивает текстовое содержимое по символу, определённому в атрибуте char, и по смещению, определённому в атрибуте charoff. Используйте свойство CSS text-align вместо этого атрибута, так как он устарел.

bgcolor Устарел

Определяет цвет фона каждой ячейки строки. Значение — HTML-цвет; либо 6-значный шестнадцатеричный код RGB, префикс которого '#', либо ключевое слово цвета. Другие значения CSS <color> не поддерживаются. Используйте свойство 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.

html
<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>).

css
tr:nth-of-type(odd) {
  background-color: #eee;
}

tr th[scope="row"] {
  background-color: #d6ecd4;
}

Результат

Строка заголовка

Этот пример расширяет базовую таблицу из предыдущего примера, добавив строку заголовка в качестве первой строки таблицы.

HTML

Дополнительная строка таблицы (<tr>) добавляется в качестве первой строки таблицы с ячейками заголовка столбца (<th>), предоставляя заголовок для каждого столбца. Мы помещаем эту строку в группирующий элемент <thead>, чтобы указать, что это заголовок таблицы. Атрибут scope добавляется к каждой ячейке заголовка (<th>) в этой строке заголовка, чтобы явно указать, что каждая ячейка заголовка относится ко всем ячейкам в своём столбце, даже если эти ячейки находятся в <tbody>.

html
<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 почти не изменился по сравнению с предыдущим примером, за исключением некоторых дополнительных стилей для выделения «строки заголовка», чтобы заголовки столбцов выделялись на фоне других ячеек.

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> ), создавая один столбец с числами в порядке убывания.

html
<table>
  <tbody>
    <tr>
      <td>3</td>
    </tr>
    <tr>
      <td>2</td>
    </tr>
    <tr>
      <td>1</td>
    </tr>
  </tbody>
</table>

JavaScript

В приведённом ниже коде JavaScript созданная sort() функция прикреплена к элементу <tbody>, чтобы сортировать ячейки таблицы по возрастанию значений и соответствующим образом обновлять отображение.

js
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 ниже, чтобы сделать их кликабельными и выполнить соответствующую сортировку при каждом нажатии.

html
<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> заполнены обычным текстом без дочерних элементов.

js
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API