CSS: Оформление таблиц
- Рамка таблицы
- Размер таблицы
- Выравнивание текста
- Чередование фонового цвета строк таблицы
- Изменение фона строки при наведении курсора
- Выравнивание таблицы по центру
Табличные данные - информация, которую можно отобразить в виде таблицы и логически разделить по столбцам и строкам. Для отображения табличных данных на веб-страницах используется HTML тег <table>, представляющий из себя контейнер с содержимым таблицы. Контент HTML таблицы описывается построчно, каждая строка начинается с открывающего тега <tr> и заканчивается закрывающим тегом </tr>
.
Внутри тега <tr>
располагаются ячейки таблицы, представленные тегами <th> или <td>. Именно ячейки содержат весь контент таблицы, отображаемый на веб-странице.
Рамка таблицы
По умолчанию HTML таблица на веб-странице отображается без рамки, для добавления рамки к таблице, как и ко всем другим элементам, используется CSS свойство border. Но стоит обратить внимание на то, что если добавить рамку только к элементу <table>
, то она отобразиться вокруг всей таблицы. Для того, чтобы ячейки таблицы тоже имели рамку, надо будет установить свойство border
и для элементов <th>
и <td>
.
table, th, td { border: 1px solid black; }Попробовать »
Теперь и таблица и ячейки имеют рамки, при этом и каждая ячейка и таблица имеют свои собственные рамки. В результате между рамками появилось пустое пространство, управлять размером этого пространства позволяет свойство border-spacing, которое задается для всей таблицы целиком. Другими словами, нельзя управлять промежутками между различными ячейками индивидуально.
Даже если убрать промежутки между ячейками с помощью значения 0
свойства border-spacing
, то рамки ячеек будут соприкасаться друг с другом, удваиваясь. Для объединения рамок ячеек используется свойство border-collapse. Оно может принимать два значения:
- separate: является значением по умолчанию. Ячейки отображаются на небольшом расстоянии друг от друга, каждая ячейка имеет свою собственную рамку.
- collapse: соединяет соседние рамки в одну, все промежутки между ячейками, а также между ячейками и рамкой таблицы игнорируются.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Название документа</title> <style> table, td, th { border: 4px outset blue; border-spacing: 5px; } .first { border-collapse: collapse; } </style> </head> <body> <table> <tr><th>Имя</th><th>Фамилия</th></tr> <tr><td>Гомер</td><td>Симпсон</td></tr> <tr><td>Мардж</td><td>Симпсон</td></tr> </table> <br> <table class="first"> <tr><th>Имя</th><th>Фамилия</th></tr> <tr><td>Гомер</td><td>Симпсон</td></tr> <tr><td>Мардж</td><td>Симпсон</td></tr> </table> </body> </html>Попробовать »
Размер таблицы
После добавления рамок к ячейкам таблицы стало заметно, что содержимое ячеек слишком близко расположено к краям. Для добавления свободного пространства между краями ячеек и их содержимым можно воспользоваться свойством padding:
th, td { padding: 7px; }Попробовать »
Размер таблицы зависит от ее содержимого, но часто возникают ситуации, когда таблица оказывается слишком узкой и появляется необходимость ее растянуть. Ширину и высоту таблицы можно изменять с помощью свойств width и height, задавая нужные размеры или самой таблице или ячейкам:
table { width: 70%; } th { height: 50px; }Попробовать »
Выравнивание текста
По умолчанию текст в заголовочных ячейках таблицы выравнивается по центру, а в обычных ячейках текст выровнен по левому краю, используя свойство text-align можно управлять выравниванием текста по горизонтали.
CSS свойство vertical-align позволяет управлять выравниванием текстового содержимого по вертикали. По умолчанию текст выровнен вертикально по центру ячеек. Вертикальное выравнивание можно переопределить с помощью одного из значений свойства vertical-align
:
- top: текст выравнивается по верхней границе ячейки
- middle: выравнивает текст по центру (значение по умолчанию)
- bottom: текст выравнивается по нижней границе ячейки
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Название документа</title> <style> table, td, th { border: 1px solid black; border-collapse: collapse; } table { width: 70% } td { text-align: right; } th { height: 50px; } .test1 { vertical-align: top; } .test2 { vertical-align: bottom; } </style> </head> <body> <table> <tr><th class="test1">Имя</th><th class="test2">Фамилия</th></tr> <tr><td>Гомер</td><td>Симпсон</td></tr> <tr><td>Мардж</td><td>Симпсон</td></tr> </table> </body> </html>Попробовать »
Чередование фонового цвета строк таблицы
При просмотре больших таблиц, содержащих много строк с большим количеством информации, бывает трудно отследить, какие данные относятся к конкретной строке. Чтобы помочь пользователям сориентироваться, можно использовать два разных фоновых цвета поочередно. Для создания описанного эффекта можно использовать селектор class, добавляя его к каждой второй строке таблицы:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Название документа</title> <style> table { width: 70%; border-collapse: collapse; } td, th { border: 1px solid #98bf21; padding: 3px 7px 2px 7px; } th { text-align: left; padding: 5px; background-color: #A7C942; color: #fff; } .alt td { background-color: #EAF2D3; } </style> </head> <body> <table> <tr><th>Имя</th><th>Фамилия</th><th>Положение</th></tr> <tr><td>Гомер</td><td>Симпсон</td><td>отец</td></tr> <tr class="alt"><td>Мардж</td><td>Симпсон</td><td>мать</td></tr> <tr><td>Барт</td><td>Симпсон</td><td>сын</td></tr> <tr class="alt"><td>Лиза</td><td>Симпсон</td><td>дочь</td></tr> </table> </body> </html>Попробовать »
Добавлять атрибут class
к каждой второй строке довольно утомительное занятие. В CSS3 был добавлен псевдо-класс :nth-child, позволяющий решить эту проблему альтернативным путем. Теперь эффекта чередования можно достичь исключительно средствами CSS, не прибегая к изменению HTML-разметки документа. С помощью псевдо-класса :nth-child
можно выбрать все четные или нечетные строки таблицы, используя одно из ключевых слов: even
(четные) или odd
(нечетные):
tr:nth-child(odd) { background-color: #EAF2D3; }Попробовать »
Изменение фона строки при наведении курсора
Еще одним способом повышения удобочитаемости табличных данных является изменение фонового цвета строки при наведении на нее курсора мыши. Это поможет выделить нужное содержимое таблицы и повысит визуальное восприятие данных.
Реализовать такой эффект очень просто, для этого нужно добавить псевдо-класс :hover
к селектору строки таблицы и задать нужный цвет фона:
tr:hover { background-color: #E0E0FF; }Попробовать »
Выравнивание таблицы по центру
Выравнивание HTML таблицы по центру возможно только в том случае, если ширина таблицы меньше, чем ширина её родительского элемента. Чтобы выровнять таблицу по центру, надо воспользоваться свойством margin
, задав ему минимум два значения: первое значение будет отвечать за внешний отступ таблицы сверху и снизу, а второе - за автоматическое выравнивание по центру:
table { margin: 10px auto; }Попробовать »
Если вам нужны разные отступы сверху и снизу таблицы, то можно задать свойству margin три значения: первое будет отвечать за отступ сверху, второе за выравнивание по горизонтали, а третье за отступ снизу:
table { margin: 10px auto 30px; }