HTML тег <tbody>
Тег <tbody> определяет основное содержимое HTML-таблицы. Используется вместе с <thead> и <tfoot>. Смотрите примеры.
Тег <tbody> определяет основное содержимое (набор строк) HTML-таблицы, создавая отдельный семантический блок внутри неё. Он используется вместе с тегами <thead> и <tfoot>, которые задают заголовок и подвал таблицы соответственно. Вместе эти три элемента делят таблицу на шапку, тело и подвал — что упрощает чтение разметки, её стилизацию и делает таблицу доступной для вспомогательных технологий.
Тег <tbody> должен быть дочерним элементом <table>, располагаться после <caption> и <colgroup> (если они есть) и после элемента <thead>. В HTML5 элемент <tfoot> может располагаться до или после элемента <tbody> — оба варианта допустимы, при этом <tfoot> всегда отображается внизу таблицы независимо от его позиции в исходном коде.
Зачем нужен <tbody>
Даже если вы никогда не пишете тег <tbody>, браузер создаёт его за вас. Когда вы помещаете строки <tr> непосредственно внутрь <table>, парсер автоматически оборачивает их в неявный <tbody>. Это имеет практические последствия:
- CSS-селекторы. Из-за неявного
<tbody>селектор-потомок видаtable > tbody > trсоответствует строкам, даже если вы не писали этот тег, тогда какtable > trне соответствует ничему. Понимание этого помогает избежать ошибок вида «мой селектор не работает». - Группировка строк. Таблица может содержать несколько элементов
<tbody>, что позволяет разделить длинную таблицу на логические секции (например, по году или категории), каждую из которых можно стилизовать и прокручивать независимо. - Скриптинг DOM. Каждый элемент
<table>предоставляет коллекциюtBodiesв JavaScript (table.tBodies[0]), что даёт прямой доступ к каждой группе тела без обхода дочерних узлов. - Печать. При печати длинной таблицы, занимающей несколько страниц, браузеры повторяют
<thead>и<tfoot>на каждой странице, тогда как содержимое<tbody>перетекает со страницы на страницу.
Элементы <thead>, <tbody> и <tfoot> не влияют на макет таблицы по умолчанию. Используйте свойства CSS для настройки внешнего вида таблицы.
При печати документа элементы <thead> и <tfoot> будут определять информацию, которая может быть одинаковой или очень похожей на каждой странице многостраничной таблицы, тогда как содержимое тега <tbody> будет варьироваться от страницы к странице.
При использовании <tbody> нельзя иметь элементы <tr> (строки таблицы), которые являются дочерними элементами <table>, но не включены в <tbody>. Если вы используете строки, не являющиеся заголовочными или подвальными, они должны находиться внутри элемента <tbody>.
В одной таблице можно использовать несколько элементов <tbody>, при условии что они следуют друг за другом. Это позволит разделить строки больших таблиц на секции, каждую из которых можно форматировать отдельно.
Синтаксис
Тег <tbody> используется парно. Содержимое записывается между открывающим (<tbody>) и закрывающим (</tbody>) тегами.
HTML тег <tbody>
<table>
<thead> ... </thead>
<tfoot> ... </tfoot>
<tbody>
<tr>
<td> ... </td>
</tr>
</tbody>
</table>Пример HTML тега <tbody>:
HTML тег <tbody>
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
th, td {
padding: 10px;
border: 1px solid #666;
}
</style>
</head>
<body>
<table style="width:80%; margin:30px auto; border-collapse:collapse;">
<thead style="background-color:#1c87c9; color:#fff;">
<tr>
<th>Month</th>
<th>Savings</th>
</tr>
</thead>
<tfoot style="background-color:grey;">
<!-- <tfoot> is placed after <thead>, but is shown on the bottom of the table. -->
<tr>
<td>Total</td>
<td>1500</td>
</tr>
</tfoot>
<tbody style="background-color:lightgrey;">
<tr>
<td>January</td>
<td>500</td>
</tr>
<tr>
<td>February</td>
<td>1000</td>
</tr>
</tbody>
</table>
</body>
</html>Результат

Пример HTML тега <tbody> с тегами <thead> и <tfoot>:
HTML тег <tbody>
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
table {
width: 60%;
margin: 30px auto;
border-collapse: collapse;
}
thead {
background-color: #8ebf42;
color: #fff;
}
tbody {
background-color: #f3ebeb;
}
tfoot {
background-color: #ccc7c7;
}
th,
td {
padding: 10px;
border: 1px solid #666666;
}
</style>
</head>
<body>
<table>
<thead>
<tr>
<th>Month</th>
<th>Savings</th>
</tr>
</thead>
<tbody>
<tr>
<td>January</td>
<td>1500</td>
</tr>
<tr>
<td>February</td>
<td>1000</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>Total</td>
<td>2500</td>
</tr>
</tfoot>
</table>
</body>
</html>Пример нескольких элементов <tbody>
В одной таблице можно использовать несколько элементов <tbody> для группировки строк в отдельные секции. Здесь каждый квартал является отдельной группой тела, и каждая группа получает свой цвет фона:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
table {
width: 60%;
margin: 30px auto;
border-collapse: collapse;
}
th,
td {
padding: 10px;
border: 1px solid #666666;
text-align: left;
}
thead {
background-color: #1c87c9;
color: #fff;
}
tbody:nth-of-type(odd) {
background-color: #f3ebeb;
}
tbody:nth-of-type(even) {
background-color: #e3f0fb;
}
</style>
</head>
<body>
<table>
<thead>
<tr>
<th>Month</th>
<th>Savings</th>
</tr>
</thead>
<tbody>
<tr>
<td>January</td>
<td>500</td>
</tr>
<tr>
<td>February</td>
<td>1000</td>
</tr>
</tbody>
<tbody>
<tr>
<td>March</td>
<td>750</td>
</tr>
<tr>
<td>April</td>
<td>1200</td>
</tr>
</tbody>
</table>
</body>
</html>Доступность
Элементы <tbody>, <thead> и <tfoot> помогают программам чтения с экрана передавать структуру таблицы. Для максимально доступной таблицы сочетайте их с ячейками заголовков, использующими атрибут scope, чтобы вспомогательные технологии могли сообщить, к какому заголовку относится ячейка с данными:
<table>
<thead>
<tr>
<th scope="col">Month</th>
<th scope="col">Savings</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">January</th>
<td>500</td>
</tr>
</tbody>
</table>Используйте scope="col" для заголовков столбцов (как правило, внутри <thead>) и scope="row" для заголовков строк внутри тела таблицы.
Атрибуты
| Атрибут | Значения | Описание |
|---|---|---|
| align | right left center justify char | Задаёт выравнивание содержимого внутри элемента <tbody>. Не поддерживается в HTML5 |
| bgcolor | bgcolor | Устанавливает цвет фона строк внутри элемента <tbody>. Не поддерживается в HTML5. |
| char | character | Задаёт выравнивание содержимого внутри элемента <tbody> по символу. Используется только при атрибуте align="char". Не поддерживается в HTML5. |
| charoff | number | Задаёт количество символов, на которое содержимое элемента <tbody> будет выровнено относительно символа, указанного в атрибуте char. Используется только при атрибуте align="char". Не поддерживается в HTML5. |
| valign | top bottom middle baseline | Задаёт вертикальное выравнивание содержимого внутри элемента <tbody>. Не поддерживается в HTML5. |
Тег <tbody> также поддерживает глобальные атрибуты и атрибуты событий.
CSS-замены устаревших атрибутов
Перечисленные выше атрибуты оформления устарели в HTML5. Используйте вместо них CSS:
| Устаревший атрибут | CSS-замена |
|---|---|
align="center" | text-align: center; |
valign="top" | vertical-align: top; |
bgcolor="#eee" | background-color: #eee; |
Как стилизовать HTML тег <tbody>
Обращайтесь к элементу <tbody> напрямую в вашей таблице стилей, чтобы задать телу таблицы собственный фон, границы и выравнивание ячеек:
tbody {
background-color: #f3ebeb;
border: 2px solid #1c87c9;
}
tbody td {
text-align: center;
vertical-align: top;
}
/* Zebra-stripe the body rows */
tbody tr:nth-of-type(even) {
background-color: #e3f0fb;
}Смотрите раздел стилизация таблиц с помощью CSS для получения дополнительных техник.