Сегодня мы вам покажем, как использовать некоторые полезные свойства CSS3, чтобы облагородить вид ваших таблиц. И это возможно, благодаря новым селекторам, которые могут обращаться к конкретным записям, ячейкам, столбцам. Таким образом, мы сможем создавать уникальные стили таблиц, без использования дополнительных классов в верстке.
Мы будем использовать градиенты -webkit и -moz, чтобы создать великолепный вид без использования изображений, и посмотрим, как вставить контент в элементы с определенным классом.
Но сначала разметка.
Разметка
В начале идет стандартная структура таблицы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
<table class="table1"> <thead> <tr> <th></th> <th scope="col" abbr="Starter">Smart Starter</th> <th scope="col" abbr="Medium">Smart Medium</th> <th scope="col" abbr="Business">Smart Business</th> <th scope="col" abbr="Deluxe">Smart Deluxe</th> </tr> </thead> <tfoot> <tr> <th scope="row">Price per month</th> <td>$ 2.90</td> <td>$ 5.90</td> <td>$ 9.90</td> <td>$ 14.90</td> </tr> </tfoot> <tbody> <tr> <th scope="row">Storage Space</th> <td>512 MB</td> <td>1 GB</td> <td>2 GB</td> <td>4 GB</td> </tr> <tr> <th scope="row">Bandwidth</th> <td>50 GB</td> <td>100 GB</td> <td>150 GB</td> <td>Unlimited</td> </tr> <tr> <th scope="row">MySQL Databases</th> <td>Unlimited</td> <td>Unlimited</td> <td>Unlimited</td> <td>Unlimited</td> </tr> <tr> <th scope="row">Setup</th> <td>19.90 $</td> <td>12.90 $</td> <td>free</td> <td>free</td> </tr> <tr> <th scope="row">PHP 5</th> <td><span class="check"></span></td> <td><span class="check"></span></td> <td><span class="check"></span></td> <td><span class="check"></span></td> </tr> <tr> <th scope="row">Ruby on Rails</th> <td><span class="check"></span></td> <td><span class="check"></span></td> <td><span class="check"></span></td> <td><span class="check"></span></td> </tr> </tbody> </table |
У нас есть все элементы, что используются в таблицах: заголовок (header), тело (body), и подвал (footer). В примере будем использовать данные тарифов одной хостинговой компании. И так, три разных стиля.
Таблица №1
Первая таблица будет в зеленых тонах с градиентом в заглавных ячейках (элементы “th”). Давайте начнем с основного стиля таблицы:
1 2 3 4 5 6 7 8 |
table.table1{ font-family: "Trebuchet MS", sans-serif; font-size: 16px; font-weight: bold; line-height: 1.4em; font-style: normal; border-collapse:separate; } |
Для того, чтобы было некоторое расстояние между ячейками, будем использовать свойство border-collapse
со значением separate
.
Можно использовать стили для шрифта с сайта Typechart. Это очень полезный ресурс с хорошими примерами шрифтов и готовым CSS кодом.
Элементы th
в заголовке будут описаны следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
.table1 thead th{ padding:15px; color:#fff; text-shadow:1px 1px 1px #568F23; border:1px solid #93CE37; border-bottom:3px solid #9ED929; background-color:#9DD929; background:-webkit-gradient( linear, left bottom, left top, color-stop(0.02, rgb(123,192,67)), color-stop(0.51, rgb(139,198,66)), color-stop(0.87, rgb(158,217,41)) ); background: -moz-linear-gradient( center bottom, rgb(123,192,67) 2%, rgb(139,198,66) 51%, rgb(158,217,41) 87% ); -webkit-border-top-left-radius:5px; -webkit-border-top-right-radius:5px; -moz-border-radius:5px 5px 0px 0px; border-top-left-radius:5px; border-top-right-radius:5px; } |
Мы используем свойство градиента для браузеров Firefox и Webkit (Safari и Chrome), чтобы создать красивый градиент из трех цветов. Свойство border-radius
скругляет верхний левый и верхний правый углы ячеек.
Теперь нам нужно позаботиться об элементе th
, являющимся пустым. С помощью селекторов CSS3 мы можем делать невероятные вещи, и одна из них — это выбор элементов, являющихся пустыми. Делается следующим образом:
1 2 3 4 |
.table1 thead th:empty{ background:transparent; border:none; } |
Подвал таблицы оформляется так:
1 2 3 4 5 6 7 8 9 10 |
.table1 tfoot td{ color: #9CD009; font-size:32px; text-align:center; padding:10px 0px; text-shadow:1px 1px 1px #444; } .table1 tfoot th{ color:#666; } |
Усилим отображение контента с помощью свойства text shadow.
Внутренние ячейки таблицы оформлены следующим образом: светло-зеленый фон и белая тень текста для получения эффекта гравировки:
1 2 3 4 5 6 7 8 9 10 11 |
.table1 tbody td{ padding:10px; text-align:center; background-color:#DEF3CA; border: 2px solid #E7EFE0; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; color:#666; text-shadow:1px 1px 1px #fff; } |
Добавим очень тонкий бордюр и скругления для ячеек. Получим небольшой светящийся эффект. Можно использовать свойство box shadow для получения подобного эффекта.
Теперь, нужно добавить иконку для всех ячеек, у которых есть элемент span
с классом check
. С помощью следующего CSS кода получим:
1 2 3 |
.table1 tbody span.check::before{ content : url(../images/check0.png) } |
Это свойство позволит добавить контент (в нашем случае это изображение) внутрь элемента. Также можно добавить текст. Можно использовать свойства ::before
или ::after
, которые и будут определять, куда вставлять контент.
На этом все. Теперь посмотрим вторую таблицу.
Таблица №2
Вторая таблица выглядит немного элегантней первой, благодаря черному заголовку и подвалу.
В этой таблице нет свободного расстояния между ячейками:
1 2 3 4 5 6 7 8 9 10 |
table.table2{ font-family: Georgia, serif; font-size: 18px; font-style: normal; font-weight: normal; letter-spacing: -1px; line-height: 1.2em; border-collapse:collapse; text-align:center; } |
Так как стили у заголовка и подвала похожи, пропишем их вместе:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
.table2 thead th, .table2 tfoot td{ padding:20px 10px 40px 10px; color:#fff; font-size: 26px; background-color:#222; font-weight:normal; border-right:1px dotted #666; border-top:3px solid #666; -moz-box-shadow:0px -1px 4px #000; -webkit-box-shadow:0px -1px 4px #000; box-shadow:0px -1px 4px #000; text-shadow:0px 0px 1px #fff; text-shadow:1px 1px 1px #000; } |
Элемент th
в футере имеет свой стиль:
1 2 3 4 5 6 |
.table2 tfoot th{ padding:10px; font-size:18px; text-transform:uppercase; color:#888; } |
Ячейки в подвале сейчас такого же стиля, что и в заголовке, нам нужно немного другое свойство box shadow. В заголовке тень указывает наверх, в подвале — вниз. Также меняем цвет текста:
1 2 3 4 5 6 7 8 9 |
.table2 tfoot td{ font-size:36px; color:#EF870E; border-top:none; border-bottom:3px solid #666; -moz-box-shadow:0px 1px 4px #000; -webkit-box-shadow:0px 1px 4px #000; box-shadow:0px 1px 4px #000; } |
Вернемся наверх и укажем для пустой ячейки стили:
1 2 3 4 5 6 |
.table2 thead th:empty{ background:transparent; -moz-box-shadow:none; -webkit-box-shadow:none; box-shadow:none; } |
Также для пустых ячеек не забываем убрать тени, определенные ранее.
С помощью селектора :nth-last-child
мы можем указать на последний элемент ячейки в заголовке и указать, что у него нет правого бордюра:
1 2 3 |
.table2 thead :nth-last-child(1){ border-right:none; } |
С помощью селектора :first-child
мы можем обратится к первой ячейке в заголовке, та которая пустая, и указать, что у нее бордюров нет. Также убираем бордюр у последних ячеек в теле таблицы:
1 2 3 4 |
.table2 thead :first-child, .table2 tbody :nth-last-child(1){ border:none; } |
Теперь добавим немного оформления для элементов th
в теле таблицы:
1 2 3 4 5 6 7 |
.table2 tbody th{ text-align:right; padding:10px; color:#333; text-shadow:1px 1px 1px #ccc; background-color:#f9f9f9; } |
И еще немного для остальных ячеек:
1 2 3 4 5 6 7 8 |
.table2 tbody td{ padding:10px; background-color:#f0f0f0; border-right:1px dotted #999; text-shadow:-1px 1px 1px #fff; text-transform:uppercase; color:#333; } |
Теперь добавим иконку в элементы span
с классом check
:
1 2 3 |
.table2 tbody span.check::before{ content : url(../images/check1.png) } |
Таблица №3
В третьей таблице будет немного больше CSS свойств, в основном, из-за разноцветных столбцов в заголовке. И то можно сделать, использя только селекторы (т.е. без дополнительных классов).
Основной стиль таблицы следующий:
1 2 3 4 5 6 7 8 9 10 11 |
table.table3{ font-family:Arial; font-size: 18px; font-style: normal; font-weight: normal; text-transform: uppercase; letter-spacing: -1px; line-height: 1.7em; text-align:center; border-collapse:collapse; } |
Стиль для ячеек th
в заголовке:
1 2 3 4 5 6 7 8 |
.table3 thead th{ padding:6px 10px; text-transform:uppercase; color:#444; font-weight:bold; text-shadow:1px 1px 1px #fff; border-bottom:5px solid #444; } |
Пустые ячейки:
1 2 3 4 |
.table3 thead th:empty{ background:transparent; border:none; } |
Теперь нам нужно выбрать с помощью селекторов определенную ячейку в заголовке, чтобы раскрасить ее в цвет. С помощью :nth-child(число)
мы можем выбирать нужного потомка:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
.table3 thead :nth-child(2), .table3 tfoot :nth-child(2){ background-color: #7FD2FF; } .table3 tfoot :nth-child(2){ -moz-border-radius:0px 0px 0px 5px; -webkit-border-bottom-left-radius:5px; border-bottom-left-radius:5px; } .table3 thead :nth-child(2){ -moz-border-radius:5px 0px 0px 0px; -webkit-border-top-left-radius:5px; border-top-left-radius:5px; } .table3 thead :nth-child(3), .table3 tfoot :nth-child(3){ background-color: #45A8DF; } .table3 thead :nth-child(4), .table3 tfoot :nth-child(4){ background-color: #2388BF; } .table3 thead :nth-child(5), .table3 tfoot :nth-child(5){ background-color: #096A9F; } .table3 thead :nth-child(5){ -moz-border-radius:0px 5px 0px 0px; -webkit-border-top-right-radius:5px; border-top-right-radius:5px; } .table3 tfoot :nth-child(5){ -moz-border-radius:0px 0px 5px 0px; -webkit-border-bottom-right-radius:5px; border-bottom-right-radius:5px; } |
Мы также добавили скругление на ячейки, располагающиеся на углах таблицы.
Основной стиль для ячеек td
в подвале:
1 2 3 4 5 6 |
.table3 tfoot td{ font-size:38px; font-weight:bold; padding:15px 0px; text-shadow:1px 1px 1px #fff; } |
Добавим немного воздуха для ячеек в теле таблицы:
1 2 3 |
.table3 tbody td{ padding:10px; } |
Нам нужно, что колонка цен была с жирным шрифтом:
1 2 3 4 |
.table3 tbody tr:nth-child(4) td{ font-size:26px; font-weight:bold; } |
Столбцы в теле таблицы будут с измененными стилями. Для этого мы будем использовать селекторы :nth-child
, но со значениями even
и odd
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
.table3 tbody td:nth-child(even){ background-color:#444; color:#444; border-bottom:1px solid #444; background:-webkit-gradient( linear, left bottom, left top, color-stop(0.39, rgb(189,189,189)), color-stop(0.7, rgb(224,224,224)) ); background:-moz-linear-gradient( center bottom, rgb(189,189,189) 39%, rgb(224,224,224) 70% ); text-shadow:1px 1px 1px #fff; } .table3 tbody td:nth-child(odd){ background-color:#555; color:#f0f0f0; border-bottom:1px solid #444; background:-webkit-gradient( linear, left bottom, left top, color-stop(0.39, rgb(85,85,85)), color-stop(0.7, rgb(105,105,105)) ); background:-moz-linear-gradient( center bottom, rgb(85,85,85) 39%, rgb(105,105,105) 70% ); text-shadow:1px 1px 1px #000; } |
Также добавим правый бордюр в последние ячейки в теле таблицы:
1 2 3 |
.table3 tbody td:nth-last-child(1){ border-right:1px solid #222; } |
Описание в заголовке будем выглядеть следующим образом:
1 2 3 4 5 6 |
.table3 tbody th{ color:#696969; text-align:right; padding:0px 10px; border-right:1px solid #aaa; } |
Слева прописываем иконку:
1 2 3 |
.table3 tbody span.check::before{ content : url(../images/check2.png) } |
Вот и все стили!
Офигенно)))