
Мы будем использовать градиенты -webkit и -moz, чтобы создать великолепный вид без использования изображений, и посмотрим, как вставить контент в элементы с определенным классом.
Но сначала разметка.
Разметка
В начале идет стандартная структура таблицы:
<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”). Давайте начнем с основного стиля таблицы:
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 в заголовке будут описаны следующим образом:
.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 мы можем делать невероятные вещи, и одна из них — это выбор элементов, являющихся пустыми. Делается следующим образом:
.table1 thead th:empty{
background:transparent;
border:none;
}
Подвал таблицы оформляется так:
.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.
Внутренние ячейки таблицы оформлены следующим образом: светло-зеленый фон и белая тень текста для получения эффекта гравировки:
.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 кода получим:
.table1 tbody span.check::before{
content : url(../images/check0.png)
}
Это свойство позволит добавить контент (в нашем случае это изображение) внутрь элемента. Также можно добавить текст. Можно использовать свойства ::before или ::after, которые и будут определять, куда вставлять контент.
На этом все. Теперь посмотрим вторую таблицу.
Таблица №2
Вторая таблица выглядит немного элегантней первой, благодаря черному заголовку и подвалу.
В этой таблице нет свободного расстояния между ячейками:
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;
}
Так как стили у заголовка и подвала похожи, пропишем их вместе:.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 в футере имеет свой стиль:
.table2 tfoot th{
padding:10px;
font-size:18px;
text-transform:uppercase;
color:#888;
}
Ячейки в подвале сейчас такого же стиля, что и в заголовке, нам нужно немного другое свойство box shadow. В заголовке тень указывает наверх, в подвале — вниз. Также меняем цвет текста:
.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;
}
Вернемся наверх и укажем для пустой ячейки стили:
.table2 thead th:empty{
background:transparent;
-moz-box-shadow:none;
-webkit-box-shadow:none;
box-shadow:none;
}
Также для пустых ячеек не забываем убрать тени, определенные ранее.
С помощью селектора :nth-last-child мы можем указать на последний элемент ячейки в заголовке и указать, что у него нет правого бордюра:
.table2 thead :nth-last-child(1){
border-right:none;
}
С помощью селектора
:first-child
мы можем обратится к первой ячейке в заголовке, та которая пустая, и указать, что у нее бордюров нет. Также убираем бордюр у последних ячеек в теле таблицы:.table2 thead :first-child,
.table2 tbody :nth-last-child(1){
border:none;
}
Теперь добавим немного оформления для элементов
th
в теле таблицы:.table2 tbody th{
text-align:right;
padding:10px;
color:#333;
text-shadow:1px 1px 1px #ccc;
background-color:#f9f9f9;
}
И еще немного для остальных ячеек:
.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:
.table2 tbody span.check::before{
content : url(../images/check1.png)
}
Таблица №3
В третьей таблице будет немного больше CSS свойств, в основном, из-за разноцветных столбцов в заголовке. И то можно сделать, использя только селекторы (т.е. без дополнительных классов).
Основной стиль таблицы следующий:
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
в заголовке:.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;
}
Пустые ячейки:
.table3 thead th:empty{
background:transparent;
border:none;
}
Теперь нам нужно выбрать с помощью селекторов определенную ячейку в заголовке, чтобы раскрасить ее в цвет. С помощью
:nth-child число)
мы можем выбирать нужного потомка:.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
в подвале:.table3 tfoot td{
font-size:38px;
font-weight:bold;
padding:15px 0px;
text-shadow:1px 1px 1px #fff;
}
Добавим немного воздуха для ячеек в теле таблицы:
.table3 tbody td{
padding:10px;
}
Нам нужно, что колонка цен была с жирным шрифтом:
.table3 tbody tr:nth-child(4) td{
font-size:26px;
font-weight:bold;
}
Столбцы в теле таблицы будут с измененными стилями. Для этого мы будем использовать селекторы
:nth-child
, но со значениями even
и odd
:.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;
}
Также добавим правый бордюр в последние ячейки в теле таблицы:
.table3 tbody td:nth-last-child(1){
border-right:1px solid #222;
}
Описание в заголовке будем выглядеть следующим образом:
.table3 tbody th{
color:#696969;
text-align:right;
padding:0px 10px;
border-right:1px solid #aaa;
}
Слева прописываем иконку:
.table3 tbody span.check::before{
content : url(../images/check2.png)
}
Вот и все стили!
Источник: Pimp Your Tables with CSS3
Комментариев нет:
Отправить комментарий