Соломоновы столбцы
Давно мы о таблицах не говорили. Да и что о них говорить? Их оформлять надо. Табличное представление информации является одним из важных инструментов донесения данных до пользователя и несомненно должно быть удобным и легким для восприятия.
Существуют различные методы визуального разграничения информации в таблицах для большего удобства восприятия. Такие как разделение строк таблицы различным цветом. Этот способ известен под названием “Полосатые таблицы“
Сегодня я хотел бы поговорить о столбцах (колонках) таблицы. Признавайтесь, сколько раз вы чертыхались, прописывая класс для каждой ячейки в каждой строке, чтобы выделить ту или иную колонку фоновым цветом?
Сейчас это конечно уже в прошлом, существуют решения с использованием JS, CSS3 и всевозможных js-фрэймворков. Мы их рассматривать сейчас не будем, благо поисковики никто не отменял.
Существует простое, кроссбраузерное решение, основаное только на HTML/CSS. А именно colgroup. Решение это совсем не ново, но почему-то незаслужено забыто многими разработчиками. Перейдем прямиком к разметке:
<table>
<caption>Столбцы / колонки:</caption>
<colgroup>
<col />
<col class="alt" />
<col />
<col class="alt" />
<col />
</colgroup>
<tr>
<th>FF2/3</th>
<th>IE6/7</th>
<th>Opera</th>
<th>Safari</th>
<th>Other</th>
</tr>
<tr>
<td>Да</td>
<td>Нет</td>
<td>Да</td>
<td>Нет</td>
<td>Да</td>
</tr>
<tr>
<td>Да</td>
<td>Нет</td>
<td>Да</td>
<td>Нет</td>
<td>Да</td>
</tr>
<tr>
<td>Да</td>
<td>Нет</td>
<td>Да</td>
<td>Нет</td>
<td>Да</td>
</tr>
<tr>
<td>Да</td>
<td>Нет</td>
<td>Да</td>
<td>Нет</td>
<td>Да</td>
</tr>
</table>
Чем этот код отличается от обычной разметки таблицы? Наличием тегов colgroup и col. Собственно colgroup является родительским контейнером для элементов col, которые и определяют нужные нам столбцы. Достаточно указать тому или иному столбцу класс и вуаля — у нас есть колонки, выделенные по вашему вкусу.
Вот так выглядит CSS:
table {
border: 1px solid #333;
border-collapse: collapse;
}
th, td {
padding: 2em;
text-align: center;
border-spacing: 1em;
}
th {
background: #ddd;
color: #fff;
}
/*Стиль для столбца*/
col.alt {
background: #ddf;
}
В принципе ничего сложного, и уж тем более инновационного, здесь нет. Таким способом можно задавать стиль для любого столбца таблицы.
Проверено в FF2/3, IE6/7, Opera 9.5, Safari|(Win)
Список поддерживаемых стилевых правил. Спецификация.
21/08/2008 в 3:01 пп
Самое неприятное в этом способе то, что кроссбраузерно поддерживаются далеко не все css-правила.
Да и то, что нельзя работать скриптом по столбцам, используя col — тоже минус.
Потому люди и предпочитают давать имена классов ячейкам, т.к. в итоге гибче и проще получается. ИМХО
21/08/2008 в 3:04 пп
@Эльдар
Я в таких случаях всегда говорю что выбор того или иного решения всегда зависит от цели. Иногда проще задать стили так, не загрязняя код, а иногда действительно лучше прописать класс для ячеек.
21/08/2008 в 5:44 пп
У этого способа есть ещё одно важное преимущество: оно ведёт к инкрементальному рендерингу таблицы. UA не придётся автоматически вычислять длины колонок, таким образом таблица будет отображаться по мере загрузки (технически, после загрузки col-информации).
[1] Tables in HTML documents
[2] Incremental display
21/08/2008 в 5:47 пп
@DinamytE
Это ценное дополнение, я о нем не знал. Спасибо
23/08/2008 в 3:39 пп
почему-то этим способом можно только ограниченное количество свойств задавать, очень жалко, чаще бывает нужно гораздо больше
23/08/2008 в 11:06 пп
@Lesha Ogonkov
Это то что у нас есть и мы с этим победим