Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Таблицы

Таблица подходит для данных, у которых есть строки и столбцы: расписание, прайс-лист, сравнение тарифов. В HTML таблицу собирают построчно: сначала строка, внутри неё — ячейки слева направо.

Простая таблица

<table> — вся таблица, <tr> (table row) — строка, <td> (table data) — обычная ячейка, <th> (table header) — ячейка-заголовок:

<table>
  <tr>
    <th>Напиток</th>
    <th>Цена</th>
  </tr>
  <tr>
    <td>Чай</td>
    <td>$3</td>
  </tr>
  <tr>
    <td>Кофе</td>
    <td>$4</td>
  </tr>
</table>

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

Рамки

Рамки добавляют в CSS. Свойство border-collapse: collapse склеивает соседние рамки в одну линию:

<style>
  table { border-collapse: collapse; }
  th, td { border: 1px solid #999; padding: 6px 12px; }
</style>
 
<table>
  <tr><th>Напиток</th><th>Цена</th></tr>
  <tr><td>Чай</td><td>$3</td></tr>
  <tr><td>Кофе</td><td>$4</td></tr>
</table>

Без border-collapse у каждой ячейки была бы своя рамка, и линии шли бы двойными.

Части таблицы

Строки большой таблицы делят на группы: <thead> — шапка, <tbody> — данные, <tfoot> — итоги. <caption> — название таблицы, его пишут первым внутри <table>:

<style>
  table { border-collapse: collapse; }
  th, td { border: 1px solid #999; padding: 6px 12px; }
</style>
 
<table>
  <caption>Заказ №42</caption>
  <thead>
    <tr><th>Товар</th><th>Сумма</th></tr>
  </thead>
  <tbody>
    <tr><td>Капучино</td><td>$4</td></tr>
    <tr><td>Круассан</td><td>$3</td></tr>
  </tbody>
  <tfoot>
    <tr><th>Итого</th><td>$7</td></tr>
  </tfoot>
</table>

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

Объединение столбцов

Атрибут colspan растягивает ячейку на несколько столбцов:

<style>
  table { border-collapse: collapse; }
  th, td { border: 1px solid #999; padding: 6px 12px; }
</style>
 
<table>
  <tr><th colspan="2">Контакты</th></tr>
  <tr><td>Телефон</td><td>+1 202 555-01-23</td></tr>
  <tr><td>Почта</td><td>hello@example.com</td></tr>
</table>

Объединение строк

rowspan растягивает ячейку вниз, на несколько строк. В следующих строках эту ячейку уже не пишут — её место занято:

<style>
  table { border-collapse: collapse; }
  th, td { border: 1px solid #999; padding: 6px 12px; }
</style>
 
<table>
  <tr><th rowspan="2">Понедельник</th><td>10:00 — йога</td></tr>
  <tr><td>18:00 — бассейн</td></tr>
  <tr><th>Вторник</th><td>12:00 — теннис</td></tr>
</table>

Частая ошибка

Таблицы нужны для данных, а не для того, чтобы расставить блоки страницы по колонкам. Раньше сайты так верстали, но такую разметку трудно менять, а на телефоне она не помещается на экран. Раскладку делают в CSS — флексбоксом и гридом из главы «Раскладка страницы». Ещё одна ошибка — разное число ячеек в строках: таблица «поедет». Считайте ячейки с учётом colspan.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.