Таблицы в HTML

FacebooktwittertumblrFacebooktwittertumblr

Данная статья написана командой Vertex Academy. Это одна из статей из нашего Самоучителя по HTML&CSS. Надеемся, что данная статья Вам будет полезна. Приятного прочтения!


Значение таблиц в HTML5

простейшая из таблиц - крестики-ноликиСегодня в вёрстке сайтов таблицы имеют не такое большое значение, как несколько лет назад. Раньше сайты создавались с помощью так называемой табличной верстки, и таблицы были основой, скелетом сайта. Позже, с развитием HTML, а также по мере появления всё большего количества портативных устройств для выхода в интернет (планшеты, смартфоны) сайты, сверстанные с помощью таблиц, "ехали", не помещались на экране, отображались коряво, и возникла потребность в резиновой, адаптивной и отзывчивой верстке.
Поэтому сейчас таблицы используются по прямому назначению - для структурированной подачи информации, будь то меню, прайс-лист или ведомость по сдавшим летнюю сессию.

Основные теги таблицы

Таблица состоит из нескольких обязательных тегов:

  • тег <table > (по англ. таблица) - это тег, который говорит браузеру, что внутри него будет таблица
  • тег <tr> (от англ. table row - строка таблицы) обозначает строку
  • тег <td> (от англ. table data - данные таблицы) обозначает ячейку. Именно в этот тег мы закладываем всё, из чего будет состоять таблица - текст, картинки, списки, кнопки или даже другие таблицы

Давайте посмотрим схематически, как это всё ложится в коде:

схематическое представление таблиц

То есть, для того чтобы создать таблицу на 3 колонки и 4 строки нам нужно 4 раза прописать элемент <tr> и в каждом из них по три раза - элемент <td>. Проверим?


Как видите, по умолчанию у нашей таблицы нет границ. В HTML5 границы, цвет границ, фона и многое другое делается с помощью CSS.

Помните, HTML отвечает за разметку веб-страниц, а CSS - за их стилизацию? Совсем скоро мы расскажем, как создаются красивые и сложные таблицы в современной верстке, а в этой статье мы хотели дать ту базу знаний, которая поможет вам разобраться именно в разметке таблицы, а не в её прихорашивании.

Оглавление таблиц

Чтобы как-то назвать таблицу, используется тег <caption>, по английски заголовок.

В большинстве случаев первая строка таблицы описывает те значения, которые пойдут в колонках и как-то выделяется среди прочих строк.

В HTML для этого есть специальный тег <th> (от англ. table header - заголовок таблицы). Он прописывается вместо <td> в первой строке. Давайте посмотрим на примере нашего мини-словарика, как это работает:

Обратите внимание, что данные в первой строчке приобрели жирный шрифт и выровнялись по центру колонок.

Иногда в таблицах нужно выделить не только первую строку, но и первый столбец. Например так:

таблица с заголовками в первой строке и первой колонке

Думаете, для этого тоже есть специальный тег?  А нет 🙂 Используется по прежнему тот же <th>, только вставляется он не вместо <td> в первой строке, а вместо первого <td> в каждой строчке, вот так:

Внимательный читатель наверняка заметил, что первая ячейка в первой колонке пустая. Если вам нужна пустая ячейка в таблице - её все равно нужно создать, просто ничего не вписывать между тегами <th></th> или <td></td>. Если этого не сделать - браузер подвинет остальные ячейки, куда сочтет нужным и содержимое таблицы поплывет. Попробуйте сами в JSFiddle убрать элемент <th></th>  и увидите, что произойдет.

Объединение ячеек по вертикали

Бывает, что соседние ячейки имеют одинаковые данные, и их можно прописать один раз вместо нескольких.

Атрибут rowspan объединяет ячейки у соседних рядов (т.е. по вертикали).

Пример объединенных ячеек:

таблица с rowspan

Давайте сверстаем такую таблицу. Чтобы нагляднее было видно объединение ячеек, все же нарисуем ей границы. Для этого применим устаревшие атрибуты, которые задаются для тега <table>:

border - отвечает за толщину границы, значение задается по умолчанию в пикселях

cellpadding - расстояние от контента ячейки до границ. Если оно ="0" - значит текст (или любой другой контент) вплотную прилегает к границам ячейки.  В случае с текстом это не очень красиво , поэтому мы зададим его равным 4 пикселям.

cellspacing - расстояние между ячейками. Если оно ="0" - значит границы ячеек накладываются друг на дружку. Если оно больше - значит каждая ячейка отстоит от другой на заданное расстояние и получается как-бы двойная рамка. Выглядит на любителя:

cellspasing="2", двойные границыЕсли мы задали атрибут border, то по умолчанию cellspasing равен 2 пикселям. Поэтому если мы хотим границы, но при этом не хотим разрывов между ними - нужно указывать, что cellspasing="0"

Здесь же вы можете видеть, как тесно тексту в ячейках - это потому, что применен cellpadding="0"

 

Итак, как же работает атрибут rowspan? Прежде, чем сверстать таблицу - нарисуйте её от руки на листке бумаги или создайте в экселе, так вам будет проще разобраться во всех этих строчках и колонках.

Схематически нашу таблицу "Сравнение моделей" можно представить, как поле для игры в морской бой:

таблица схематически, как в морском боеВ ней есть 4 колонки и 4 строчки,

во второй колонке вторая и третья ячейки объединены - ставим кораблик.

В четвертой колонке совмещены третья и четвертая ячейка - и туда ставим кораблик.

Вот только в HTML мы пишем код не колонками, а строчками. Как же записать это в коде?

Очевидно, что первая строка без изменений - пишем <tr></tr> и в нём 4 элемента <th>.

Вторая строка: пишем <tr></tr>, и в нём 4 элемента <td>, только теперь второму из них прописываем атрибут rowspan="2" (это означает, что будут объединены 2 ячейки)

Третья строка:  пишем <tr></tr>, и теперь у нас всего 3 элемента <td>, потому что один из них, который во второй колонке "отобрала" верхняя ячейка.  Последнему элементу <td> также нужно прописать атрибут rowspan="2".

Четвертая строка: внутри элемента <tr> снова прописываем всего 3 элемента <td>, потому что в четвертой колонке его уже нет - он поглотился верхней ячейкой.

Еще раз посмотрим на нашу таблицу, но уже с тегами. Читать нужно, как книгу - слева направо, сверху вниз:

схема объединения ячеек по вертикали

А теперь наконец проверим, как это работает в редакторе:

Объединение ячеек по горизонтали

Атрибут colspan объединяет ячейки у соседних колонок (т.е. по горизонтали). Принцип здесь тот же, что и с rowspan

К примеру нам нужно создать вот такую таблицу:

таблица с объединенными по горизонтали ячейками

Давайте снова прочитаем её слева направо, сверху вниз:

  • строка 1: пять <th>, причем первый оставляем незаполненным
  • строка 2: один <th> и 3 <td>, вторая и третья ячейки объединены, т.е. для второго <td> прописываем colspan="2"
  • строка 3: один <th> и 2 <td>, третья,  четвертая и пятая ячейки объединились, т.е. для третьего <td> пишем colspan="3"
  • строка 4:  один <th> и 2 <td>. Вторая и третья, а также четвертая и пятая объединены - для каждого из двух <td> прописываем colspan="2"

Схематично это можно отобразить так:

схема объединения ячеек по горизонтали

Теперь посмотрим на код и результат поближе:

Всё получилось 🙂

Перфекционист скажет, что здесь колонки разной ширины и таблица из-за этого некрасивая. Да, браузер автоматически подстраивает ширину колонки под самый широкий текст, который в ней есть. Чтобы сделать колонки одинаковой ширины, им нужно задать какой-то фиксированный размер с помощью CSS. Поэтому красивыми мы научимся делать таблицы позже, когда познакомимся с  CSS.

А пока всё. До встречи!

FacebooktwittertumblrFacebooktwittertumblr

FacebooktwittertumblrFacebooktwittertumblr
Самоучители--узнать детальнее--