CSS оформление таблиц — ширина, высота, выравнивание, размер и другие параметры
Про HTML-таблицы читайте здесь, а в этой статье я расскажу об их оформлении с помощью CSS. Для форматирования таблиц каскадные стили используют перечисленные ниже свойства.
width и height
Задают соответственно ширину и высоту таблицы. Без этих свойств параметры определяются автоматически и зависят от содержимого контейнера <table>. Значения устанавливаются в любых единицах длины CSS, но зачастую используются пиксели (px) и проценты (%). Последние настраивают ширину относительно родительского элемента, первые же задают абсолютную величину.
table {width: 450px; height: 80%;}
Указывает, где будет размещён заголовок таблицы, описанный тегом <caption>. Свойству можно задавать значения:
- top — расположить над таблицей.
- bottom — разместить под таблицей.
Эксклюзивно для обозревателя Firefox доступны значения
table {caption-side: top;}
border-collapse
Помогает избежать ситуаций, когда границы ячеек образуют двойные рамки. На рисунке ниже показан как раз такой случай.
Так рамки ячеек отображаются по умолчанию. Правило border-collapse: separate; даёт такой же эффект. Чтобы решить проблему, нужно объявить border-collapse: collapse; (результат показан на рисунке ниже).
border-spacing
Определяет расстояние между границами ячеек. Правило задаётся сразу для всей таблицы. Если значение одно, то оно установит расстояние и по горизонтали, и по вертикали. Если значения два, то первое задаст расстояние по горизонтали, второе — по вертикали. Свойство несовместимо с правилом table {border-collapse: collapse;}.
CSS-код
table { border: 4px double #FCA360; border-collapse: separate; border-spacing: 10px 20px; } td { padding: 3px; border: 1px solid #FCA360; }
Задаёт таблице следующее оформление:
empty-cells
Указывает, будет ли отображаться фон и границы ячейки, если она пуста. Значение у свойства может быть одно из двух:
- show — показывать границы и фон (по умолчанию).
- hide — скрыть их. Если все ячейки строки пусты, то будет скрыта, соответственно, вся строка. Если таблице задано правило border-collapse: collapse;, то свойство игнорируется.
table-layout
Указывает браузеру, как определять ширину ячеек таблицы, основываясь на их содержимом.
- auto. Ширина определяется автоматически. При этом либо суммируется ширина всех столбцов, либо берётся значение свойства width, если таблице оно задано. Браузер сначала загружает таблицу, потом анализирует её, определяя ширину, и только после этого отображает.
- fixed. Фиксированная ширина, которая определяется по первой строке.
Пример оформления таблицы
Не забывайте, что таблице можно задавать и другие универсальные правила, например, как мы это делали с высотой (height) и шириной (width).
Помня это, оформим несложную таблицу, частично прокомментировав код.
<!DOCTYPE html> <html> <head> <title>border-collapse</title> <style> table { width: 50%; caption-side: bottom; border: 4px solid #006400; border-collapse: collapse; table-layout: fixed; } th { font-size: 13px; font-weight: bold; background: #ADFF2F; border-top: 4px solid #006400; border-bottom: 3px solid #FF8C00; color: #039; padding: 8px; } td { background: #E0FFFF; border-bottom: 1px solid #FF8C00; border-top: 1px solid transparent; padding: 8px; </style> </head> <body> <table> <caption>Пример таблицы</caption> <tr> <th>Цены</th><th>2014</th> <th>2015</th><th>2016</th> </tr> <tr> <td>Хлеб</td><td>16</td> <td>18</td><td>21</td> </tr> <tr> <td>Сахар</td><td>35</td> <td>44</td><td>50</td> </tr> <tr> <td>Соль</td><td>8</td> <td>8,50</td><td>9</td> </tr> </table> </body> </html>
В браузере таблица будет выглядеть, как показано ниже.
width: 50%;
Задаём ширину таблицы в половину от родительской. 50% берётся от ширины контейнера <body>, потому что других родителей у неё нет. То есть таблица будет занимать ровно половину окна браузера.
Размещаем заголовок снизу, под таблицей.
border: 4px solid #006400;
Задаём таблице цветную рамку толщиной 4 пикселя.
border-collapse: collapse;
Объединяем границы ячеек.
table-layout: fixed;
Настраиваем способ определения браузером ширины таблицы.
font-size: 13px;
Задаём размер шрифта заглавных ячеек.
font-weight: bold;
Делаем текст внутри них жирным.
background: #ADFF2F;
Устанавливаем цвет фона ячеек.
border-top: 4px solid #006400; border-bottom: 3px solid #FF8C00;
Настраиваем верхние и нижние рамки.
color: #039;
Определяем цвет текста.
padding: 8px;
Задаём расстояние от содержимого ячеек до их границ равным восьми пикселям.
Полезные ссылки:
Оформление таблиц с помощью CSS.
CSS даёт нам практически неограниченные возможности для красивого оформления таблиц. В этом уроке мы рассмотрим как стилизовать рамку таблицы, задать размеры и добавить фон.
Границы и рамки таблицы.
Чтобы задать таблице рамку, используется свойство border. В значениях этого свойства мы указываем ширину рамки в пикселях, стиль рамки и её цвет.
Стили рамки показаны на рисунке.
table {
border: 1px solid #000;
}
Чтобы задать рамку ячейкам, используется то же свойство border, но для элемента td.
td {
border: 1px solid #000;
}
Элементы table и td можно перечислить через запятую, тогда рамка появится, как для всей таблицы, так и для каждой ячейки.
table, td {
border: 1px solid #000;
}
Если мы хотим убрать промежутки между ячейками, используем свойство border-collapse со значением collapse.
table, td{
border-collapse: collapse;
border: 1px solid #000;
}
Чтобы внешнюю рамку сделать жирнее, для элемента table просто увеличиваем ширину рамки.
table{
border-collapse: collapse;
border: 2px solid #000;
}
td{
border: 1px solid #000;
}
Размеры таблицы.
Ширина таблицы и ячеек задаётся свойством width. Значение выставляется либо в пикселях либо в процентах.
table{
border-collapse: collapse;
border: 2px solid #000;
width: 300px;
}
td{
border: 1px solid #000;
}
Если мы хотим первый столбец сделать шире других, то для элемента td используем псевдокласс first-child, и для него прописываем ширину столбца. (Для последнего столбца last-child).
table{
border-collapse: collapse;
border: 2px solid #000;
width: 300px;
}
td{
border: 1px solid #000;
}
td:first-child {
width: 200px;
}
Чтобы сделать второй столбец шире других, используем для элемента td псевдокласс nth-child(2).
border-collapse: collapse;
border: 2px solid #000;
width: 300px;
}
td{
border: 1px solid #000;
}
td:nth-child(2) {
width: 200px;
}
Как вы уже догадались, чтобы сделать 3-й столбец отличный от других используем nth-child(3). И т.д.
Высота рядов регулируется с помощью свойства padding для элемента td. С помощью свойства padding указывается расстояние от границы элемента до содержимого элемента.
table{
border-collapse: collapse;
border: 2px solid #000;
width: 300px;
}
td{
border: 1px solid #000;
padding: 15px;
}
В нашем примере – это расстояние от границы элемента td до текста внутри элемента td, и составляет оно 15px со всех сторон.
Цвет фона таблицы.
Общий фон таблицы определяется свойством background, значением которого будет код цвета RGB.
table{
border-collapse: collapse;
border: 2px solid #000;
width: 300px;
background: #00c0ff;
}
td{
border: 1px solid #000;
padding: 15px;
}
Если мы хотим сделать столбцы разных цветов, то используем для элемента td псевдокласс nth-child(1)(каждому номеру будет соответствовать свой столбец), и для каждого псевдокласса прописываем background.
td:nth-child(1) {
background: #00c0ff;
}
td:nth-child(2) {
background: #4652c5;
}
Чтобы ряды сделать разными цветами прописываем точно такой же код, но только для элемента tr.
tr:nth-child(1) {
background: #00c0ff;
}
tr:nth-child(2) {
background: #4652c5;
}
Если нам нужно, чтобы все чётные столбцы были одного цвета, а нечётные другого, то используем тот же псевдокласс nth-child но со значениями odd (все нечётные элементы) и even (все чётные элементы).
tr:nth-child(even) {background: #00c0ff;
}
tr:nth-child( odd) {
background: #4652c5;
}
Табличная HTML верстка сайта: пример и применение
При таком типе вёрстки элементы сайта располагаются по ячейкам. Создаётся файл-шаблон с разметкой и используется как основа для всех остальных страниц. Фактически от файла к файлу меняется только основной контент. Шапка сайта, его низ и меню берутся из уже готового шаблона и обычно остаются неизменными.
Табличная вёрстка проста и во всех браузерах выглядит одинаково. Но состоящие из таблиц страницы много весят, медленно загружаются и содержат избыточный код. К тому же структура таблиц позволяет создать только строгий дизайн.
Вёрстка этого типа делается просто: в теле документа создаётся таблица (и ничего, кроме неё), в ячейки которой добавляется весь контент. Вёрстка потому и называется табличной, что вся страница состоит из таблиц, а вся выводимая информация находится внутри их ячеек. Даже область с основным содержимым страницы (например, со статьёй) — это всего лишь ячейка, текст из которой отображается на экране.
HTML-документ не обязательно должен состоять из одной таблицы — их можно вкладывать друг в друга, получая более интересное оформление.
Теги для создания таблиц были рассмотрены в соответствующей статье. Ниже приведён пример их использования.
Итак, пример табличной вёрстки:
<!DOCTYPE html> <html> <head> <title>Табличная вёрстка</title> </head> <body> <table border="1" cellpadding="0" cellspacing="0"> <tr> <th colspan=2>шапка сайта (логотип, слоган, телефон)</th> </tr> <tr> <th>навигация</th> <th>заголовок</th> </tr> <tr> <td> <ul> <li><a href="index.html" title="Ссылка 1">Ссылка 1</a></li> <li><a href="index.html" title="Ссылка 2">Ссылка 2</a></li> <li><a href="index.html" title="Ссылка 3">Ссылка 3</a></li> </ul> </td> <td>контент</td> </tr> <tr> <td colspan=2>Низ сайта (баннеры, счетчики, информация)</td> </tr> </table> </body> </html>
Если поместить этот код в тело HTML-документа и открыть получившийся файл в браузере, то страница будет выглядеть так:
Вот и вся разметка. Для создания страниц вам остаётся только сделать копию файла и вместо отображаемых слов вставить свой контент. Так, копируя файлы и редактируя содержащийся в ячейках текст, вы можете создать сколь угодно большой веб-сайт с табличной вёрсткой.
Но взглянем на код с пояснениями.
<table border="1" cellpadding="0" cellspacing="0">
- Тег <table> открывает таблицу.
- Атрибут border задаёт толщину табличных рамок.
- Cellspacing устанавливает расстояние между ячейками. В данном случае оно сделано нулевым, чтобы таблица не расползалась.
<th colspan=2>шапка сайта (логотип, слоган, телефон)</th>
- <th> — открывающий тег ячейки заголовка таблицы. В отличие от других, текст в этой ячейке будет выровнен по центру и выделен полужирным.
- Colspan — атрибут, значение которого определяет, сколько ячеек по горизонтали относительно других строк текущий элемент будет занимать.
- </th> закрывает ячейку.
- Текст между тегами <th> и </th> — это и есть содержимое ячейки, ради него всё и делалось.
</tr> — конец строки.
<th>навигация</th> <th>заголовок</th>
Я разделил 100% ширины страницы на две части: 20% отдал под блок навигации, 80% — под основной контент.
<td> <ul> <li><a href="index.html" title="Ссылка 1">Ссылка 1</a></li> <li><a href="index.html" title="Ссылка 2">Ссылка 2</a></li> <li><a href="index.html" title="Ссылка 3">Ссылка 3</a></li> </ul>
Вёрстка блока навигации. Создаю ячейку, занимающую 20% ширины таблицы. Внутри тегов <ul> </ul> расположен список ссылок. На его основе можно сделать меню сайта.
<tr><td colspan=2>Низ сайта (баннеры, счетчики, информация)</td></tr>
В следующей строке настраиваю подвал (низ) сайта. Для этого использую уже знакомые теги. При помощи colspan=2 делаю, чтобы низ сайта занимал по горизонтали сразу две ячейки, как шапка — эти части, в отличие от тела страницы, на блоки в моём случае делить не нужно.
Таким образом, для создания табличной вёрстки сайта, содержащего все основные элементы (шапку, низ, меню, контент страницы) понадобилась таблица, состоящая из четырёх строк и шести ячеек (строки головы и ног сайта содержат по одному элементу).
На современных сайтах практикуется блочная верстка, а таблицы уже вчерашний день.
Полезные ссылки:
Красивая стилизация таблицы на CSS – Di-Grand
table {
overflow:hidden;
border:1px solid #d3d3d3;
background:#fefefe;
width:70%;
margin:5% auto ;
-moz-border-radius:5px; /* FF1+ */
-webkit-border-radius:5px; /* Saf3-4 */
border-radius:5px;
-moz-box-shadow: 4px rgba(0, 0, 0, 0.2);
-webkit-box-shadow: 4px rgba(0, 0, 0, 0.2);
}
th, td {
padding:18px 28px 18px;
text-align:center;
}
th {
padding-top:22px;
text-shadow: 1px 1px 1px #fff;
background:#e8eaeb;
}
td {
border-top:1px solid #e0e0e0;
border-right:1px solid #e0e0e0;
}
tr.odd-row td {
background:#f6f6f6;
}
td.first, th.first {
text-align:left
}
td.last {
border-right:none;
}
td {
background: -moz-linear-gradient(100% 25% 90deg, #fefefe, #f9f9f9);
background: -webkit-gradient(linear, 0% 0%, 0% 25%, from(#f9f9f9), to(#fefefe));
}
tr.odd-row td {
background: -moz-linear-gradient(100% 25% 90deg, #f6f6f6, #f1f1f1);
background: -webkit-gradient(linear, 0% 0%, 0% 25%, from(#f1f1f1), to(#f6f6f6));
}
th {
background: -moz-linear-gradient(100% 20% 90deg, #e8eaeb, #ededed);
background: -webkit-gradient(linear, 0% 0%, 0% 20%, from(#ededed), to(#e8eaeb));
}
tr:first-child th.first {
-moz-border-radius-topleft:5px;
-webkit-border-top-left-radius:5px; /* Saf3-4 */
}
tr:first-child th.last {
-moz-border-radius-topright:5px;
-webkit-border-top-right-radius:5px; /* Saf3-4 */
}
tr:last-child td.first {
-moz-border-radius-bottomleft:5px;
-webkit-border-bottom-left-radius:5px; /* Saf3-4 */
}
tr:last-child td.last {
-moz-border-radius-bottomright:5px;
-webkit-border-bottom-right-radius:5px; /* Saf3-4 */
}