Colspan

Коротко

Атрибут ячейки таблицы (td или th), который растягивает её на несколько соседних столбцов — так делают общий заголовок над группой колонок или итог на всю ширину.

Что такое «Colspan»

Таблица в HTML — это прямоугольная сетка, и каждая строка по умолчанию состоит из одинакового числа ячеек. Иногда сетку нужно нарушить: подписать несколько колонок одним заголовком, вывести итог на всю ширину, вставить разделитель «Дополнительные услуги» посреди прайса. Для этого ячейке говорят, сколько столбцов она занимает. Значение по умолчанию — 1.

Пример разметки

<table>
  <tr>
    <th rowspan="2">Модель</th>
    <th colspan="3">Габариты, см</th>
  </tr>
  <tr>
    <th>Ширина</th><th>Высота</th><th>Глубина</th>
  </tr>
  <tr>
    <td>Шкаф-купе</td><td>180</td><td>240</td><td>60</td>
  </tr>
</table>

Заголовок «Габариты» занимает три столбца, под ним три уточняющих заголовка. Ячейка «Модель» с атрибутом rowspan растянута по вертикали на две строки, поэтому во второй строке её нет.

Как считать ячейки

Главная ошибка — несовпадение суммы. В каждой строке сумма значений colspan всех ячеек плюс места, занятые растянутыми сверху ячейками, должна быть одинаковой. Если в одной строке получилось четыре столбца, а в другой пять, браузер не выдаст ошибку, а просто сдвинет ячейки: цифры окажутся не под своими заголовками. Проверить удобно в инструментах разработчика, подсветив ячейку, или валидатором разметки.

Для доступности в многоуровневых таблицах заголовки связывают с ячейками явно: заголовкам дают id, а ячейкам — атрибут headers со списком нужных id. Группы колонок можно описать элементами colgroup и пометить общий заголовок как scope="colgroup". Тогда экранный диктор сможет назвать у ячейки оба заголовка, «Габариты» и «Высота», а не просто прочитать число.

Аналог в CSS Grid

Colspan относится к табличным данным. Если нужно растянуть блок на несколько колонок в макете страницы, таблица не нужна: в CSS Grid то же делает свойство grid-column: span 3. Правило простое: прайс, характеристики, расписание — таблица с colspan; карточки, баннеры и колонки сайта — сетка в CSS. Подробнее про устройство самих ячеек — в статье «Ячейка таблицы».

Обновлено:

Все термины раздела «Frontend»

Что будем искать? Например,Продвижение