Все ленты — последние статьи

*Практические CSS3 таблицы с закругленными углами

Источник http://codingtools.ru/lessons/2/109  Обратил внимание со стильным дизайном.

 

Существуют некие дискуссии о том, когда и как использовать таблицы в веб-разработке. Вывод один: когда мы имеем дело с табличными данными, таблицы просто необходимы.

Проектирование дизайна таблицы всегда является сложной задачей. Если ваша таблица трудно сканируется взглядом, как правило, раздражает пользователей, они теряют фокус и путаются в столбцах и строках.

Сегодня мы создадим красивую таблицу с иcпользованием CSS3. Так же будем использовать jQuery для совместимости с некоторыми браузерами.

 

 

И что хорошего в оформлении этих таблиц?


Здесь вы увидите, как можно совмещать CSS3 и таблицы, для того, что бы получить полезный и красивый результат.

  • закругленные углы без использования изображений
  • легкость обновления — нет дополнительных CSS идентификаторов и классов
  • удобно и легко читается.

Закругленные углы таблицы


Используем трюк: в то время как свойство border-collapse и имеет значение separate, нужно установить для свойства border-spacing значение 0.

1 table {
2     *border-collapse: collapse; /* Для IE7 и ниже */
3     border-spacing: 0;
4 }

Для IE7 и ниже нам необходимо добавить специальную строку, для обеспечения совместимости вывода таблицы.

Затем нам просто нужно закруглить некоторые углы:

01 th:first-child {
02     -moz-border-radius: 6px 0 0 0;
03     -webkit-border-radius: 6px 0 0 0;
04     border-radius: 6px 0 0 0;
05 }
06  
07 th:last-child {
08     -moz-border-radius: 0 6px 0 0;
09     -webkit-border-radius: 0 6px 0 0;
10     border-radius: 0 6px 0 0;
11 }
12  
13 th:only-child{
14     -moz-border-radius: 6px 6px 0 0;
15     -webkit-border-radius: 6px 6px 0 0;
16     border-radius: 6px 6px 0 0;
17 }

Обратная совместимость с использованием jQuery


Возможно Вы уже знаете, что когда речь идет о IE6, то :hover работает только для элементов ссылок.

Поэтому вместо CSS-кода:

1 .bordered tr:hover{
2   background: #fbf8e9;
3   -o-transition: all 0.1s ease-in-out;
4   -webkit-transition: all 0.1s ease-in-out;
5   -moz-transition: all 0.1s ease-in-out;
6   -ms-transition: all 0.1s ease-in-out;
7   transition: all 0.1s ease-in-out;
8 }

вы можете использовать решение на jQuery для имитации эффекта при наведении:

1 $('.bordered tr').mouseover(function(){
2     $(this).addClass('highlight');
3 }).mouseout(function(){
4     $(this).removeClass('highlight');
5 });

А вот стиль для класса highlight, который используется в JavaScript коде:

1 .highlight{
2   background: #fbf8e9;
3   -o-transition: all 0.1s ease-in-out;
4   -webkit-transition: all 0.1s ease-in-out;
5   -moz-transition: all 0.1s ease-in-out;
6   -ms-transition: all 0.1s ease-in-out;
7   transition: all 0.1s ease-in-out;
8 }

Создаем эффект зебры


Для создания эффекта зебры, используя CSS3, выбираем четные строки в tbody.

1 .zebra tbody tr:nth-child(even) {
2     background: #f5f5f5;
3     -webkit-box-shadow: 0 1px 0 rgba(255,255,255,.8) inset;
4     -moz-box-shadow:0 1px 0 rgba(255,255,255,.8) inset;
5     box-shadow: 0 1px 0 rgba(255,255,255,.8) inset;
6 }

Выше приведенный CSS3-селектор не поддерживается в старых браузерах. Ниже приведен jQuery-код, который позволит добиться эффекта зебры во всех браузерах:

1 $(".zebra tbody tr:even").addClass('alternate');

А также стиль класса для JavaScript кода:

1 .alternate {
2     background: #f5f5f5;
3     -webkit-box-shadow: 0 1px 0 rgba(255,255,255,.8) inset;
4     -moz-box-shadow:0 1px 0 rgba(255,255,255,.8) inset;
5     box-shadow: 0 1px 0 rgba(255,255,255,.8) inset;
6 }

 

 

Демо: посмотреть

Исходники: скачать

Источник: перейти

Пракическая реализация. создайте файлик *.html с кодом ниже и будет результат

 

<!DOCTYPE html>
<html>
<head>
    <title>Практические CSS3 таблицы с закругленными углами</title>
    <meta charset="utf-8">
<style>

body {
    width: 600px;
    margin: 40px auto;
    font-family: 'trebuchet MS', 'Lucida sans', Arial;
    font-size: 14px;
    color: #444;
}

table {
    *border-collapse: collapse; /* Для IE7 и меньше */
    border-spacing: 0;
    width: 100%;    
}

.bordered {
    border: solid #ccc 1px;
    -moz-border-radius: 6px;
    -webkit-border-radius: 6px;
    border-radius: 6px;
    -webkit-box-shadow: 0 1px 1px #ccc;
    -moz-box-shadow: 0 1px 1px #ccc;
    box-shadow: 0 1px 1px #ccc;         
}

.bordered tr:hover {
    background: #fbf8e9;
    -o-transition: all 0.1s ease-in-out;
    -webkit-transition: all 0.1s ease-in-out;
    -moz-transition: all 0.1s ease-in-out;
    -ms-transition: all 0.1s ease-in-out;
    transition: all 0.1s ease-in-out;     
}    
    
.bordered td, .bordered th {
    border-left: 1px solid #ccc;
    border-top: 1px solid #ccc;
    padding: 10px;
    text-align: left;    
}

.bordered th {
    background-color: #dce9f9;
    background-image: -webkit-gradient(linear, left top, left bottom, from(#ebf3fc), to(#dce9f9));
    background-image: -webkit-linear-gradient(top, #ebf3fc, #dce9f9);
    background-image:    -moz-linear-gradient(top, #ebf3fc, #dce9f9);
    background-image:     -ms-linear-gradient(top, #ebf3fc, #dce9f9);
    background-image:      -o-linear-gradient(top, #ebf3fc, #dce9f9);
    background-image:         linear-gradient(top, #ebf3fc, #dce9f9);
    -webkit-box-shadow: 0 1px 0 rgba(255,255,255,.8) inset;
    -moz-box-shadow:0 1px 0 rgba(255,255,255,.8) inset;  
    box-shadow: 0 1px 0 rgba(255,255,255,.8) inset;        
    border-top: none;
    text-shadow: 0 1px 0 rgba(255,255,255,.5);
}

.bordered td:first-child, .bordered th:first-child {
    border-left: none;
}

.bordered th:first-child {
    -moz-border-radius: 6px 0 0 0;
    -webkit-border-radius: 6px 0 0 0;
    border-radius: 6px 0 0 0;
}

.bordered th:last-child {
    -moz-border-radius: 0 6px 0 0;
    -webkit-border-radius: 0 6px 0 0;
    border-radius: 0 6px 0 0;
}

.bordered tr:last-child td:first-child {
    -moz-border-radius: 0 0 0 6px;
    -webkit-border-radius: 0 0 0 6px;
    border-radius: 0 0 0 6px;
}

.bordered tr:last-child td:last-child {
    -moz-border-radius: 0 0 6px 0;
    -webkit-border-radius: 0 0 6px 0;
    border-radius: 0 0 6px 0;
}

/*----------------------*/

.zebra td, .zebra th {
    padding: 10px;
    border-bottom: 1px solid #f2f2f2;    
}

.zebra tbody tr:nth-child(even) {
    background: #f5f5f5;
    -webkit-box-shadow: 0 1px 0 rgba(255,255,255,.8) inset;
    -moz-box-shadow:0 1px 0 rgba(255,255,255,.8) inset;  
    box-shadow: 0 1px 0 rgba(255,255,255,.8) inset;        
}

.zebra th {
    text-align: left;
    text-shadow: 0 1px 0 rgba(255,255,255,.5);
    border-bottom: 1px solid #ccc;
    background-color: #eee;
    background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#eee));
    background-image: -webkit-linear-gradient(top, #f5f5f5, #eee);
    background-image:    -moz-linear-gradient(top, #f5f5f5, #eee);
    background-image:     -ms-linear-gradient(top, #f5f5f5, #eee);
    background-image:      -o-linear-gradient(top, #f5f5f5, #eee);
    background-image:         linear-gradient(top, #f5f5f5, #eee);
}

.zebra th:first-child {
    -moz-border-radius: 6px 0 0 0;
    -webkit-border-radius: 6px 0 0 0;
    border-radius: 6px 0 0 0;  
}

.zebra th:last-child {
    -moz-border-radius: 0 6px 0 0;
    -webkit-border-radius: 0 6px 0 0;
    border-radius: 0 6px 0 0;
}

.zebra tfoot td {
    border-bottom: 0;
    border-top: 1px solid #fff;
    background-color: #f1f1f1;  
}

.zebra tfoot td:first-child {
    -moz-border-radius: 0 0 0 6px;
    -webkit-border-radius: 0 0 0 6px;
    border-radius: 0 0 0 6px;
}

.zebra tfoot td:last-child {
    -moz-border-radius: 0 0 6px 0;
    -webkit-border-radius: 0 0 6px 0;
    border-radius: 0 0 6px 0;
}  
</style>
</head>

<body>

<h2>Выделенные строки, рамки</h2>
<table class="bordered">
    <thead>
    <tr>
        <th>#</th>        
        <th>IMDB Top 10 Movies</th>
        <th>Year</th>
    </tr>
    </thead>
    <tr>
        <td>1</td>        
        <td>The Shawshank Redemption</td>
        <td>1994</td>
    </tr>        
    <tr>
        <td>2</td>         
        <td>The Godfather</td>
        <td>1972</td>
    </tr>
    <tr>
        <td>3</td>         
        <td>The Godfather: Part II</td>
        <td>1974</td>
    </tr>    
    <tr>
        <td>4</td>
        <td>The Good, the Bad and the Ugly</td>
        <td>1966</td>
    </tr>
    <tr>
        <td>5</td>
        <td>Pulp Fiction</td>
        <td>1994</td>
    </tr>
    <tr>
        <td>6</td>
        <td>12 Angry Men</td>
        <td>1957</td>
    </tr>
    <tr>
        <td>7</td>
        <td>Schindler's List</td>
        <td>1993</td>
    </tr>    
    <tr>
        <td>8</td>
        <td>One Flew Over the Cuckoo's Nest</td>
        <td>1975</td>
    </tr>
    <tr>
        <td>9</td>
        <td>The Dark Knight</td>
        <td>2008</td>
    </tr>
    <tr>
        <td>10</td>
        <td>The Lord of the Rings: The Return of the King</td>
        <td>2003</td>
    </tr>
</table>

<br><br>

<h2>Зебра, итоговый раздел снизу</h2>
<table class="zebra">
    <thead>
    <tr>
        <th>#</th>        
        <th>IMDB Top 10 Movies</th>
        <th>Year</th>
    </tr>
    </thead>
    <tfoot>
    <tr>
        <td>&nbsp;</td>        
        <td></td>
        <td></td>
    </tr>
    </tfoot>    
    <tr>
        <td>1</td>        
        <td>The Shawshank Redemption</td>
        <td>1994</td>
    </tr>        
    <tr>
        <td>2</td>         
        <td>The Godfather</td>
        <td>1972</td>
    </tr>
    <tr>
        <td>3</td>         
        <td>The Godfather: Part II</td>
        <td>1974</td>
    </tr>    
    <tr>
        <td>4</td>
        <td>The Good, the Bad and the Ugly</td>
        <td>1966</td>
    </tr>
    <tr>
        <td>5</td>
        <td>Pulp Fiction</td>
        <td>1994</td>
    </tr>
    <tr>
        <td>6</td>
        <td>12 Angry Men</td>
        <td>1957</td>
    </tr>
    <tr>
        <td>7</td>
        <td>Schindler's List</td>
        <td>1993</td>
    </tr>    
    <tr>
        <td>8</td>
        <td>One Flew Over the Cuckoo's Nest</td>
        <td>1975</td>
    </tr>
    <tr>
        <td>9</td>
        <td>The Dark Knight</td>
        <td>2008</td>
    </tr>
    <tr>
        <td>10</td>
        <td>The Lord of the Rings: The Return of the King</td>
        <td>2003</td>
    </tr>
</table>
</body>
</html>