# Tables
The HTML <table> element allows web authors to display tabular data (such as text, images, links, other tables, etc.) in a two dimensional table with rows and columns of cells.
# Simple Table
This will render a <table> consisting of three total rows ( <tr> ): one row of header cells ( <th> ) and two rows of content cells ( <td> ). <th> elements are tabular headers and <td> elements are tabular data. You can put whatever you want inside a <td> or <th> .
# Spanning columns or rows
Table cells can span multiple columns or rows using the colspan and rowspan attributes. These attributes can be applied to <th> and <td> elements.
Will result in

Note that you should not design a table where both rows and columns overlap as this is invalid HTML and the result is handled differently by different web browsers.
rowspan = A non-negative integer that specifies the number of rows spanned by a cell. The default value of this attribute is one ( 1 ). A value of zero ( 0 ) means that the cell will extend from the current row until the last row of the table ( <thead> , <tbody> , or <tfoot> ).
colspan = A non-negative integer that specifies the number of columns spanned by the current cell. The default value of this attribute is one ( 1 ). A value of zero ( 0 ) means that the cell will extend from the current to the last column of the column group <colgroup> in which the cell is defined.
# Column Groups
Sometimes you may want to apply styling to a column or group of columns. Or for semantic purposes, you may want to group columns together. To do this, use <colgroup> and <col> elements.
The optional <colgroup> tag allows you to group columns together. <colgroup> elements must be child elements of a <table> and must come after any <caption> elements and before any table content (e.g., <tr> , <thead> , <tbody> , etc.).
The optional <col> tag allows you to reference individual columns or a range of columns without applying a logical grouping. <col> elements are optional, but if present, they must be inside a <colgroup> element.
The following CSS styles can be applied to <colgroup> and <col> elements:
For more information, see HTML5 Tabular data
# Table with thead, tbody, tfoot, and caption
HTML also provides the tables with the <thead> , <tbody> , <tfoot> , and <caption> elements. These additional elements are useful for adding semantic value to your tables and for providing a place for separate CSS styling.
When printing out a table that doesn’t fit onto one (paper) page, most browsers repeat the contents of <thead> on every page.
There’s a specific order that must be adhered to, and we should be aware that not every element falls into place as one would expect. The following example demonstrates how our 4 elements should be placed.
The following example’s results are demonstrated twice—the first table lacks any styles, the second table has a few CSS properties applied: background-color , color , and border *. The styles are provided as a visual guide and is not an essential aspect of the topic at hand.


| Element | Styles Applies |
|---|---|
| <caption> | Yellow text on black background. |
| <thead> | Bold text on purple background. |
| <tbody> | Text on blue background. |
| <tfoot> | Text on green background. |
| <th> | Orange borders. |
| <td> | Red borders. |
# Heading scope
th elements are very commonly used to indicate headings for table rows and columns, like so:
This can be improved for accessibility by the use of the scope attribute. The above example would be amended as follows:
scope is known as an enumerated attribute, meaning that it can have a value from a specific set of possible values. This set includes:
- col
- row
- colgroup
- rowgroup
# Syntax
- <table></table>
- <thead></thead>
- <tbody></tbody>
- <tfoot></tfoot>
- <tr></tr>
- <th></th>
- <td></td>
# Remarks
The various table elements and their content attributes together define the table model. The <table> element is the container element for table models/tabular data. Tables have rows, columns, and cells given by their descendants. The rows and columns form a grid; a table’s cells must completely cover that grid without overlap. The list below describes the various elements in the table model:
- <table> — The container element for table models/tabular data. <table> represents data with more than one dimension in the form of a table.
- <caption> — Table caption or title (Like a figcaption to a figure )
- <col> — A column (a no-content element)
- <colgroup> — A grouping of columns
- <thead> — Table header (only one)
- <tbody> — Table body / content (multiple are okay)
- <tfoot> — Table footer (only one)
- <tr> — Table row
- <th> — Table header cell
- <td> — Table data cell
Semantically, tables are meant for holding tabular data. You can think of it as a way to display and describe data that would make sense in a spreadsheet (columns and rows).
Using tables for layout is not recommended. Instead, use CSS rules for layout and formatting, including display: table .
One notable exception typically displayed in the industry regarding using <table> layout is in regards to HTML email: some email clients, including Outlook, rolled back to older rendering engines after Microsoft lose their monopoly case vs. the EU. In order for Microsoft to make IE not part of the OS, they simply rolled back Outlook’s rendering engine to an earlier version of Trident. This rollback simply doesn’t support modern web technologies, so using <table> based layouts for HTML email is the only way to ensure cross-browser/platform/client compatibility.
Какой тег используется чтобы сделать ячейку таблицы заглавной?
th — обозначает заглавную ячейку. Эта ячейка хранит тип информации, а данные хранятся в tr.
Какие атрибуты элемента table есть в стандарте html5?
До html5 был целый вагон, но не будем забивать этой кучей голову, ибо они объявлены устаревшими. Остался один-единственный: border. По стандарту, обозначает, для чего используется таблица, и принимает 2 значения: 0 — таблица используется для разметки, 1 — таблица применяется как таблица. В придачу добавляет к таблице рамку.
Какие атрибуты ячейки таблицы существуют в стандарте html5?
Опять же, до html5 был вагон, даже не буду приводить, ибо устарели. Остались 3:
- colspan — заставляет ячейку занять заданное количество столбцов
- rowspan — заставляет ячейку занять заданное количество строк
- headers — применяется для настройки accessibility (будет чуть ниже)
Приведите пример объединения ячеек таблицы?
Как браузер отрисовывает таблицу?
Отрисовка происходит по ячейкам: слева направо, сверху вниз. Сначала рисуется первая ячейка первого ряда, даже если она занимает несколько рядов и столбцов, потом вторая ячейка первого ряда… и тд.
Как настроить accessibility для таблицы?
Для этого существует атрибут ячейки headers. Он связывает ячейку с заголовочной ячейкой.
- Проставляем заголовочным ячейкам id
- Проставляем остальным ячейкам значение header равное id заголовочных ячеек
Как настроить группировку строк таблицы в семантические секции?
Для этого есть атрибуты thead, tbody, tfoot. Объединив строки в семантические группы, можно назначать им стили, настраивать прокрутку и тд.
Объединение различных строк html-таблицы
Моя задача-создать таблицу ( table ), показанную на фото нижe:

Мне нужно использовать только html , а если это невозможно, то можно использовать минимальное количество css . У меня есть проблема, а именно при создании выделенных красным цветом полей в таблице:

Как объединить ячейки разных строк в одну ячейку ?
Атрибут rowspan для тега <td> устанавливает число ячеек, которые должны быть объединены по вертикали.
![]()
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.5.24.43458
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Таблицы — Основы верстки контента
Таблицы — страшный сон верстальщика. Они громоздкие в своей верстке и в них очень легко запутаться. Важно «набить руку» и вы сможете достаточно быстро и без боли верстать даже самые сложные варианты таблиц.
Базовая верстка таблиц
Таблица — составной элемент, который формируется сразу из нескольких вложенных друг в друга тегов. Это похоже на то, как верстаются списки — имеется контейнер и внутри него специальные теги-элементы. Таблицы имеют похожие структуры, только контейнеров и элементов немного больше.
Любая таблица начинается с парного тега <table> . Одного этого контейнера уже достаточно, чтобы получить первую работающую таблицу.
В отличие от списков, таблицы можно назвать двухмерной системой. Здесь есть строки и столбцы. Именно в таком порядке они и обозначаются.
Для создания строки используется тег <tr> (от англ. Table Row). Количество строк и регулируется количеством этих тегов внутри <table> . Попробуем создать три строки:
Сейчас эта разметка почти ничего не сообщает браузеру. Если вставить текст в тегах <tr> , то браузер посчитает такой код неверным и постарается обработать его самостоятельно. Например, некоторые браузеры автоматически «вытащат» весь этот текст и переместят его за пределы тега <table> .
Для добавления данных нужны колонки. Их можно добавить с помощью тега <td> (от англ. Table Data). Количество колонок вы так же регулируете самостоятельно. Сколько тегов <td> , столько колонок в таблице и будет.
Важно: количество колонок должно совпадать в каждой строке. Если количество колонок будет не совпадать, то таблица может банально «сломаться». Следите за этим.
Заметьте, что по умолчанию таблицы не имеют никаких границ между строками и ячейками. Для их добавления можно пойти двумя путями:
- Указать атрибут border для тега <table> . Это сразу установит все возможные границы, как для строк, так и для столбцов. Данный метод считается устаревшим и не рекомендуется к использованию.
- Использовать свойство border для необходимых тегов.
Лучший вариант — использование CSS. Так вы будете хранить стили в одном месте, и не будет нужды вспоминать об атрибутах.
Главная неприятность — возникновение двойных границ. Это может быть дизайнерской «фишкой», но чаще всего такое не требуется. Нужно «схлопнуть» отступы и для этого используется свойство border-collapse со значением collapse . Для возвращения в исходное состояние используется значение separate .
Выравнивание контента по вертикали
Помимо знакомого вам свойства text-align , таблицы позволяют выравнивать контент по вертикали. Это простая операция, которая постоянно использовалась во времена табличной верстки. Главное, не пытайтесь найти такие макеты. Выровнять по вертикали можно любой контент, будь то просто текст или какой-то блок.
Для выравнивания по вертикали используется свойство vertical-align , которое принимает одно из четырех значений:
- baseline — выравнивание по базовой линии шрифта. Подробнее с таким выравниванием и его принципами вы познакомитесь в курсе CSS: Flex.
- top — выравнивание по верхнему краю ячейки.
- middle — выравнивание по центру. Стандартное поведение для контента внутри ячеек.
- bottom — выравнивание по нижнему краю ячейки.
Заголовки таблицы
Сложно представить себе таблицу, которая не имеет заголовков. Без них понять, какая ячейка относится к какой информации, почти невозможно. Можно визуально задать стили заголовков и для некоторых ячеек ввести свои стили. Но семантически таких заголовков не будет существовать, что плохо для доступности.
Создать секцию с заголовками можно с помощью тега <thead> . Строки и ячейки внутри такой обертки будут являться заголовками колонок нашей таблицы. Есть и еще небольшое изменение: вместо тега <td> внутри шапки используется тег <th> (от англ. Table Head). Это, помимо семантической нагрузки, позволяет проще определять стили.
Хорошей практикой является добавление тега <tbody> для основного контента. Если этого не сделать, то браузер подставит его сам, но лучше доверять собственной разметке, чем работе браузера.
В качестве заголовка самой таблицы используется текст, обрамленный в тег <caption> . По умолчанию он располагается вверху всей таблицы, вне зависимости от того, где вы расположите тег. Это поведение можно контролировать с помощью свойства caption-side . Оно принимает одно из двух значений:
- top — позиция по умолчанию. Заголовок располагается до таблицы.
- bottom — расположение заголовка после таблицы.
Пример таблицы с использованием новых тегов и свойств:
Объединение строк и столбцов
Не все таблицы имеют простую структуру из ровных столбцов и строк. Объединение нескольких строк или столбцов — распространенная практика при верстке таблиц. Рассмотрим базовые правила на примере табеля выплаты зарплаты сотрудников.
Сама по себе таблица является достаточно простой и не должна вызвать у вас никаких проблем. Попробуйте сверстать ее самостоятельно. После этого продолжите урок. Чем больше таблиц вы сверстаете, тем меньше ошибок в них будете допускать.
Создадим базовый каркас всей таблицы, без объединения строк или столбцов:
Обратите внимание на пустые ячейки. Они не нужны в данной таблице и от них нужно избавиться таким образом, чтобы информация в соседних ячейках получила правильный перенос и начала занимать все доступное пространство.
В HTML для этой операции существуют два атрибута:
- colspan — объединение столбцов.
- rowspan — объединения строк.
Принцип работы достаточно прост — в качестве значения атрибута указывается количество строк/столбцов, которое должен занять элемент. Например,
- <td colspan="3"> — ячейка должна занять пространство трех столбцов.
- <td rowspan="2"> — ячейка должна занять пространство в две строки.
Важно: ячейки, на месте которых будут расположены ячейки с colspan и rowspan, должны быть удалены из таблицы.
Попробуем объединить данные о менеджере первых двух сотрудников. Для этого нужно у ячейки с нужным менеджером установить атрибут rowspan со значением 2. Обязательно нужно удалить последнюю ячейку в строке ниже.
Проделаем то же самое для последней строки, только теперь нужно объединить столбцы. Для этого используем атрибут colspan со значением 4.
Итоговый вид таблиц:
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно