Лого SiteHere.ru

Эффект 3D кнопки на CSS3 используя 3D Transform

Эффект 3D кнопки на CSS3 используя 3D Transform

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

Пример кнопок можно увидеть здесь. Я сделал 6 разных кнопок:

Посмотреть примерСкачать



HTML часть — Эффект 3D кнопки

Кнопки создаются с помощью следующих блоков. Изначально текст, который находится в <span> с идентификатором information скрыт и появляется он лишь при наведении на кнопку:

1
2
3
4
5
6
7
8
<div class="wrapper">
    <div class="item">
        <img src="images/contact.png">
        <span class="information">
            <strong>Кнопка 1</strong> Nam vel dignissim arcu. Quisque pretium imperdiet magna in pretium.
        </span>
    </div>
</div>


CSS часть

Здесь мы и задаем все свойства для наших кнопок. И создаем эффект 3D трансформирования:

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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
.wrapper {
    display: inline-block;
    width: 310px;
    height: 100px;
    vertical-align: top;
    margin: 1em 1.5em 2em 0;
    cursor: pointer;
    position: relative;
    font-family: Tahoma, Arial;
    -webkit-perspective: 4000px;
    -moz-perspective: 4000px;
    -ms-perspective: 4000px;
    -o-perspective: 4000px;
    perspective: 4000px;
}
 
.item {
    height: 100px;
    -webkit-transform-style: preserve-3d;
    -moz-transform-style: preserve-3d;
    -ms-transform-style: preserve-3d;
    -o-transform-style: preserve-3d;
    transform-style: preserve-3d;
    -webkit-transition: -webkit-transform .6s;
    -moz-transition: -moz-transform .6s;
    -ms-transition: -ms-transform .6s;
    -o-transition: -o-transform .6s;
    transition: transform .6s;
}
 
.item:hover {
    -webkit-transform: translateZ(-50px) rotateX(95deg);
    -moz-transform: translateZ(-50px) rotateX(95deg);
    -ms-transform: translateZ(-50px) rotateX(95deg);
    -o-transform: translateZ(-50px) rotateX(95deg);
    transform: translateZ(-50px) rotateX(95deg);
}
 
.item:hover img {
    box-shadow: none;
    border-radius: 15px;
}
 
.item:hover .information {
    box-shadow: 0px 3px 8px rgba(0,0,0,0.3);
    border-radius: 3px;
}
 
.item img {
    display: block;
    position: absolute;
    top: 0;
    border-radius: 3px;
    box-shadow: 0px 3px 8px rgba(0,0,0,0.3);
    -webkit-transform: translateZ(50px);
    -moz-transform: translateZ(50px);
    -ms-transform: translateZ(50px);
    -o-transform: translateZ(50px);
    transform: translateZ(50px);
    -webkit-transition: all .6s;
    -moz-transition: all .6s;
    -ms-transition: all .6s;
    -o-transition: all .6s;
    transition: all .6s;      
}
 
.item .information {
    display: block;
    position: absolute;
    top: 0;
    height: 80px;
    width: 290px;
    text-align: left;
    border-radius: 15px;
    padding: 10px;
    font-size: 12px;
    text-shadow: 1px 1px 1px rgba(255,255,255,0.5);
    box-shadow: none;
    background: rgb(236,241,244);
    background: -moz-linear-gradient(top,  rgba(236,241,244,1) 0%, rgba(190,202,217,1) 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(236,241,244,1)), color-stop(100%,rgba(190,202,217,1)));
    background: -webkit-linear-gradient(top,  rgba(236,241,244,1) 0%,rgba(190,202,217,1) 100%);
    background: -o-linear-gradient(top,  rgba(236,241,244,1) 0%,rgba(190,202,217,1) 100%);
    background: -ms-linear-gradient(top,  rgba(236,241,244,1) 0%,rgba(190,202,217,1) 100%);
    background: linear-gradient(to bottom,  rgba(236,241,244,1) 0%,rgba(190,202,217,1) 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ecf1f4', endColorstr='#becad9',GradientType=0 );
    -webkit-transform: rotateX(-90deg) translateZ(50px);
    -moz-transform: rotateX(-90deg) translateZ(50px);
    -ms-transform: rotateX(-90deg) translateZ(50px);
    -o-transform: rotateX(-90deg) translateZ(50px);
    transform: rotateX(-90deg) translateZ(50px);
    -webkit-transition: all .6s;
    -moz-transition: all .6s;
    -ms-transition: all .6s;
    -o-transition: all .6s;
    transition: all .6s;      
}
 
.information strong {
    display: block;
    margin: .2em 0 .5em 0;
    font-size: 20px;
    font-family: "Oleo Script";
}


Вывод

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


Успехов!

Источник: webstuffshare.com

3 комментария к записи
  • Александр Маврин

    Справедливо было бы написать какими браузерами поддерживаются эти эффекты.

     
    • Юрий

      Данный эффект будет работать в современных браузерах с поддержкой CSS3. Но для того чтобы не думать о том поддерживает браузер или нет данный эффект, лучше использовать js-библиотеку modernizr, которая будет проверять поддержку данного свойства у браузера. В будущем я думаю сделать статью и более подробно описать данную библиотеку.

       
  • junothan

    можно вместо картинки вставить логотип а при наведении показывать рекламу или спрятать в него поиск по сайту интересный блок

     

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *