
По умолчанию заголовок таблицы в HTML отображается сверху или снизу с помощью атрибута caption-side. Однако нередко возникает задача расположить его сбоку, например слева от данных. Для этого стандартного HTML-тега недостаточно, потребуется комбинировать <caption> с CSS.
В качестве основы используется тег <caption>, который привязывается к таблице. Далее через CSS задаётся свойство caption-side: left;. Оно не входит в набор широко применяемых по умолчанию значений, поэтому для корректного результата применяют дополнительные правила: перенос заголовка в блочный контейнер, установка writing-mode, а также контроль отступов и выравнивания.
При создании подобных решений важно учитывать совместимость браузеров. В некоторых случаях приходится использовать flex-контейнер или обертку для всей таблицы, где заголовок оформляется отдельным элементом слева. Такой подход даёт больше контроля над позиционированием и позволяет задать единый стиль для нескольких таблиц.
Использование тега caption с атрибутом align

Тег <caption> применяется для добавления заголовка таблицы. По умолчанию он отображается сверху и по центру. Для смещения заголовка влево использовался атрибут align.
Пример размещения заголовка слева:
<table border="1">
<caption align="left">Список сотрудников</caption>
<tr>
<th>Имя</th>
<th>Должность</th>
</tr>
<tr>
<td>Иванов И.И.</td>
<td>Менеджер</td>
</tr>
</table>
Атрибут align поддерживает значения left, right, top, bottom. В современных стандартах он считается устаревшим, поэтому для новых проектов рекомендуется использовать CSS-свойство caption-side и выравнивание текста с помощью text-align.
Размещение заголовка таблицы через CSS свойство caption-side

Свойство caption-side в CSS управляет положением элемента <caption> относительно таблицы. По умолчанию заголовок отображается сверху (top), но можно изменить расположение на bottom, left или right.
Пример:
<table>
<caption>Список сотрудников</caption>
<tr><th>Имя</th><th>Отдел</th></tr>
<tr><td>Иван</td><td>Продажи</td></tr>
</table>
table caption {
caption-side: left;
}
Для удобства чтения при размещении слева рекомендуется задавать дополнительное форматирование: отступы, выравнивание текста, вращение через transform: rotate(-90deg); при необходимости вертикального вида.
Применение flex-контейнера для выравнивания caption слева

Стандартный элемент <caption> располагается по центру таблицы, и простого атрибута для смещения влево не предусмотрено. Для контроля положения можно использовать flex-контейнер.
Таблицу оборачивают в блок с display: flex и свойством flex-direction: column. Заголовок и сама таблица становятся дочерними элементами контейнера, после чего к <caption> применяют align-self: flex-start.
Пример:
<div style="display: flex; flex-direction: column;">
<caption style="align-self: flex-start;">Заголовок слева</caption>
<table border="1">
<tr><th>A</th><th>B</th></tr>
<tr><td>1</td><td>2</td></tr>
</table>
</div>
Такой подход позволяет точно задать положение заголовка независимо от ширины таблицы, сохраняя контроль над выравниванием.
Создание отдельной колонки с заголовком вместо caption

Вместо использования тега <caption> можно добавить первый столбец таблицы, где будет располагаться общий заголовок. Такой приём позволяет совместить название и структуру данных в одной таблице.
Для этого в строке заголовков создаётся ячейка с атрибутом rowspan, которая охватывает все строки таблицы. В остальных ячейках этой строки размещаются стандартные названия колонок.
Пример:
<table border="1">
<tr>
<th rowspan="4">Продажи 2024</th>
<th>Квартал</th>
<th>Сумма, ₽</th>
</tr>
<tr>
<td>I</td>
<td>120000</td>
</tr>
<tr>
<td>II</td>
<td>135000</td>
</tr>
<tr>
<td>III</td>
<td>142000</td>
</tr>
</table>
Такое решение удобно при отображении больших таблиц, где требуется выделить общий заголовок, остающийся видимым при прокрутке данных.
Использование псевдоэлементов для имитации заголовка слева

Заголовок таблицы можно визуально вынести в левую часть без изменения структуры, применяя псевдоэлементы ::before или ::after. Такой метод удобен, когда требуется стилизовать данные, не вмешиваясь в исходный HTML-код.
Для этого каждой строке или ячейке задаётся атрибут data-label, содержащий текст заголовка. В CSS к соответствующему элементу добавляется правило:
td::before { content: attr(data-label); font-weight: bold; display: inline-block; width: 120px; }
В результате каждая ячейка получает слева собственный псевдозаголовок. Ширину блока можно регулировать, чтобы выровнять текст. Такой подход особенно полезен при адаптивной верстке, когда таблица преобразуется в список.
Важно следить за читаемостью: использовать отступы через padding и разделение строк, чтобы псевдозаголовки не сливались с содержимым. Для скрытия этих заголовков на широких экранах можно применять медиазапросы.
Адаптация заголовка под разные размеры экрана

Для корректного отображения заголовка таблицы слева на устройствах с различной шириной экрана рекомендуется использовать относительные единицы измерения и медиазапросы CSS. Оптимальный вариант – задать ширину заголовка в процентах, например, 20–25% от ширины таблицы.
Пример структуры таблицы с заголовком слева:
| Параметр | Значение |
|---|---|
| Размер | Средний |
| Цвет | Синий |
Для экранов шириной до 768px рекомендуется уменьшать ширину заголовка до 30–35% и увеличивать размер шрифта содержимого таблицы до 14–16px, чтобы сохранить читаемость. Используются медиазапросы:
@media (max-width: 768px) {
th { width: 35%; font-size: 16px; }
td { font-size: 14px; }
}
На узких экранах (менее 480px) целесообразно переводить таблицу в вертикальный формат: заголовок размещается над значением, что упрощает восприятие информации и предотвращает горизонтальную прокрутку.
Пример адаптивного HTML для мобильных устройств:
| Параметр | Значение |
|---|---|
| Размер | Средний |
| Цвет | Синий |
Реализация через медиазапросы позволяет сохранить структуру таблицы без потери читаемости и корректно отображать заголовки слева на любых экранах.
Сравнение подходов и выбор подходящего варианта

Размещение заголовка таблицы слева можно реализовать несколькими способами, каждый из которых имеет свои ограничения и преимущества.
- Использование атрибута
scope="row"в ячейках<th>:Позволяет обозначить первую колонку как заголовочную. Поддерживается всеми современными браузерами и корректно интерпретируется скринридерами.
Ограничение: визуально не меняет выравнивание текста, требуется CSS для позиционирования.
- Применение CSS-свойства
text-align: left;илиwriting-mode:Даёт полный контроль над выравниванием текста.
writing-mode: vertical-rl;позволяет размещать заголовки вертикально.Ограничение: вертикальное отображение может усложнить чтение на мобильных устройствах.
- Использование отдельной колонки с классом для заголовка:
Создаётся дополнительный столбец, где размещаются названия строк. Упрощает стилизацию и изменение ширины столбца.
Ограничение: увеличивает размер HTML-кода и требует синхронизации с данными таблицы.
- Flexbox или Grid для таблиц:
Позволяет полностью управлять расположением ячеек, включая заголовки слева. Поддерживает адаптивность.
Ограничение: теряется семантика стандартной таблицы, скринридеры могут некорректно интерпретировать содержимое.
Выбор подхода зависит от задачи:
- Если важна семантика и доступность – использовать
<th scope="row">и CSS для выравнивания. - Если требуется сложная визуальная компоновка – применять Flexbox или Grid, но сохранять ARIA-атрибуты для доступности.
- Для вертикальных заголовков или ограниченной ширины –
writing-modeс отдельным классом.
Рекомендуется избегать решений, которые ломают стандартную таблицу, если данные должны оставаться легко читаемыми и корректно воспринимаемыми скринридерами.
Вопрос-ответ:
Можно ли с помощью чистого HTML разместить заголовок таблицы слева?
В чистом HTML нет специального тега, который бы позволял расположить заголовок слева. Для этого обычно используют CSS: с помощью свойства writing-mode или transform: rotate() можно повернуть текст, а text-align и vertical-align помогут скорректировать положение заголовка.
Как сделать, чтобы заголовок столбца отображался вертикально слева от таблицы?
Для вертикального расположения текста можно использовать CSS-свойство writing-mode: vertical-rl;. Если требуется полностью разместить заголовок слева от таблицы, его часто помещают в отдельную ячейку первой строки или используют th с rowspan, чтобы заголовок занимал всю высоту таблицы. Дополнительно можно применить padding для отступов и выравнивания.
Нужно ли использовать таблицы внутри таблицы, чтобы сдвинуть заголовок влево?
В большинстве случаев вложенные таблицы не требуются. Можно просто использовать один th с атрибутом rowspan и задать ему стили CSS для выравнивания. Вложенные таблицы усложняют структуру и делают код менее удобным для поддержки.
Как правильно выровнять текст заголовка по левому краю таблицы?
Для выравнивания по левому краю используют CSS-свойство text-align: left; внутри тега th или td. Если заголовок расположен вертикально, нужно дополнительно настроить writing-mode и padding, чтобы текст не перекрывал содержимое таблицы и оставался читаемым.
Можно ли сделать, чтобы заголовок слева автоматически растягивался по высоте таблицы?
Да, это достигается с помощью атрибута rowspan в теге th. Установив rowspan равным количеству строк таблицы, заголовок займет всю высоту. При этом для точного позиционирования стоит добавить CSS для вертикального выравнивания текста с помощью vertical-align: middle; или top.
