edubun
Русский

Таблицы

Расписание автобусов является таблицей: каждая ячейка имеет смысл только вместе с заголовком своей строки и своего столбца.

Таблицы нужны для данных

Используй таблицу, когда у информации есть строки и столбцы: расписание, прайс-лист, результаты опроса. В конце 1990-х многие сайты строили таблицами всю вёрстку страницы: меню в одной ячейке, содержимое в другой. Это создаёт настоящие проблемы. Экранные дикторы объявляют каждую ячейку с её строкой и столбцом, так что таблица для вёрстки звучит как запутанная электронная таблица, а табличная вёрстка плохо подстраивается под маленькие экраны. Сегодня вёрстку делают на CSS, а таблицы оставляют для данных.

Строки, ячейки и заголовки

Таблица строится строка за строкой. <table> охватывает всё, каждый <tr> (table row) является одной строкой, а внутри строки каждый <td> (table data) является одной ячейкой. Ячейки, которые подписывают строку или столбец, используют вместо этого <th> (table header), и браузеры по умолчанию показывают их жирными и по центру. Число ячеек в каждой строке должно совпадать, чтобы столбцы выстраивались ровно.

<table>
  <caption>Bread prices, October 2026</caption>
  <thead>
    <tr><th scope="col">Loaf</th><th scope="col">Weight</th><th scope="col">Price</th></tr>
  </thead>
  <tbody>
    <tr><th scope="row">Sourdough</th><td>800 g</td><td>6.50</td></tr>
    <tr><th scope="row">Rye</th><td>600 g</td><td>5.00</td></tr>
  </tbody>
</table>
Подпись, строка заголовков в thead и заголовки строк в первом столбце.

Пусть таблица объясняет себя сама

Три добавки превращают сетку ячеек в таблицу, которую может прочитать каждый. Первая: <caption> сразу после открывающего тега <table> даёт таблице название. Экранные дикторы объявляют его до содержимого, так что слушатель знает, о чём таблица. Вторая: атрибут scope у каждого <th> говорит, подписывает он столбец (scope="col") или строку (scope="row"). С ним экранный диктор прочитает «Rye, Price, 5.00», а не голое 5.00. Третья: <thead>, <tbody> и <tfoot> группируют строки заголовков, строки тела и итоговые строки. Они делают структуру ясной, помогают оформить каждую часть через CSS и позволяют браузеру повторять заголовок на каждой печатной странице длинной таблицы.

Объединённые ячейки

Ячейка может растянуться на несколько столбцов с помощью colspan или на несколько строк с помощью rowspan. В недельном расписании обеденный перерыв, общий для всех пяти будних дней, может быть одной ячейкой с colspan="5". Когда ячейка растягивается, в её строке нужно меньше ячеек: если в строке обычно 6 ячеек, а у одной из них colspan="5", в HTML этой строки будет только 2 ячейки. Объединяй ячейки, когда это отражает данные. Очень сложные таблицы трудно читать всем, поэтому часто лучше разбить одну большую таблицу на две простые.

Широкие таблицы бывают проблемой на телефонах. Таблица не переносится, как текст, поэтому таблица с множеством столбцов может оказаться шире экрана. Обычное решение: обернуть таблицу в элемент, который сам прокручивается вбок с помощью CSS, чтобы остальная страница не становилась шире.

Держи данные в каждой ячейке как можно проще: одно значение на ячейку, единицы измерения в заголовке («Цена в евро»), а не в каждой ячейке, и никаких пустых ячеек для отступов. Такую таблицу легче читать вслух, легче сортировать, и она аккуратно вставляется в электронную таблицу.

tableОхватывает таблицу данных
trСтрока таблицы
tdЯчейка данных
thЯчейка-заголовок, которая подписывает строку или столбец
captionНазвание таблицы, первое внутри table
scopeГоворит, подписывает th столбец (col) или строку (row)
colspan / rowspanЯчейка, которая занимает несколько столбцов или строк
  1. Когда стоит использовать таблицу?
    • Для данных в строках и столбцах
    • Для вёрстки всей страницы
    • Для любого списка
  2. Какой элемент является строкой?
  3. Какой элемент подписывает столбец?
    • th
    • td
    • caption
  4. Куда ставится caption?
    • Сразу после открывающего тега table
    • В конец таблицы
    • Перед таблицей
  5. Что значит scope="row" у th?
    • Он подписывает ячейки своей строки
    • Он подписывает свой столбец
    • Он растягивается на всю строку
  6. В строке обычно 6 ячеек. У одной ячейки colspan="4". Сколько ячеек записано в этой строке?
  7. Какой элемент группирует строки заголовков?
    • thead
    • tbody
    • tfoot
  8. Чем плохи таблицы для вёрстки?
    • Экранные дикторы читают их как данные, и они не подстраиваются под маленькие экраны
    • Это неправильный HTML
    • В них нельзя поместить изображения
  9. Какой атрибут позволяет ячейке занять две строки?
    • rowspan="2"
    • colspan="2"
    • scope="2"
  10. Что экранный диктор объявляет первым у таблицы с подписью?
    • Подпись
    • Последнюю строку
    • Ничего
Главное
  • Таблицы нужны для данных: table, tr, th, td.
  • caption даёт таблице название, scope связывает заголовки с ячейками, thead, tbody, tfoot группируют строки.
  • colspan и rowspan объединяют ячейки; делай таблицы простыми.
Источники курса (10)
  • WHATWG, HTML Living Standard (html.spec.whatwg.org, checked 2026-10-17)
  • MDN Web Docs, Learn web development: Structuring content with HTML, and the HTML element reference (developer.mozilla.org/en-US/docs/Learn_web_development/Core/Structuring_content and developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements, checked 2026-10-17)
  • MDN, HTML images (alt text guidance, checked 2026-10-17)
  • W3C WAI, Images tutorial and alt decision tree (w3.org/WAI/tutorials/images/decision-tree, checked 2026-10-17)
  • CERN, A short history of the Web (home.cern/science/computing/the-birth-of-the-web/short-history-web/, checked 2026-10-17)
  • W3C and WHATWG memorandum of understanding, 28 May 2019 (w3.org/2019/04/WHATWG-W3C-MOU.html, checked 2026-10-17)
  • W3C, Using ARIA, first rule of ARIA use (w3.org/TR/using-aria/, checked 2026-10-17)
  • W3C Markup Validation Service (validator.w3.org, checked 2026-10-17)
  • MDN, Viewport meta element (checked 2026-10-17)
  • Every code exercise was checked with a Playwright probe against a reference solution.

Проверено: 2026-10-17