Лого www.SiteHere.ru

Потрясающий анимированный 3D текст

Анимированный 3D текст

В этом уроке рассмотрим как создать интересный эффект анимированного 3D текста с помощью псевдо-элементов, CSS переходов и преобразований. Идея принадлежит проекту «Edenspiekermann’s Open Type project». Целью урока является показать как можно создать эффект реальной открытки с помощью CSS преобразований и переходов с использованием псевдо-элементов.

Реальный пример можно увидеть здесь:

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

Помните! Псевдо-элементы и переходы не работают в каждом браузере. Лучше всего они работают в Chrome и Mozilla.

HTML часть — «Анимированный 3D текст»

Разметка страница достаточно простая, каждый элемент списка содержит один символ, но символ также взят в тег <span> с атрибутом data-letter, который в дальнейшем будет являться тенью символа:

1
2
3
4
5
6
<ul class="grid">
    <li class="ot-letter-left"><span data-letter="А">А</span></li>
    <li class="ot-letter-top"><span data-letter="Б">Б</span></li>
    <li class="ot-letter-right"><span data-letter="В">В</span></li>
    <li class="ot-letter-bottom"><span data-letter="Г">Г</span></li>
</ul>

CSS часть

У буквы будет несколько состояний: обычное, тень от буквы и когда буква приподнимается. Основной стиль для букв:

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
.grid li span {
    display: inline-block;
    font-weight: 900;
    line-height: 1;
    position: relative;
    color: hsla(0, 0%, 0%, 0.6);
    -webkit-transform-style: preserve-3d;
    -ms-transform-style: preserve-3d;
    transform-style: preserve-3d;
    -webkit-perspective: 550px;
    -ms-perspective: 550px;
    perspective: 550px;
    z-index: 1;
}
 
.grid li span:before,
.grid li span:after {
    position: absolute;
    content: attr(data-letter);
    line-height: inherit;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 2;
    -webkit-transition: all .3s;
    transition: all .3s;
}
 
.grid li span:before {
    text-shadow: none;
    color: hsla(0, 0%, 0%, 0.12);
}

Задаем свойства чтобы буква открывалась слева:

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
.ot-letter-left span:before,
.ot-letter-left span:after {
    -webkit-transform-origin: 0 50%;
    -ms-transform-origin: 0 50%;
    transform-origin: 0 50%;
}
 
.ot-letter-left span:before {
    -webkit-transform: scale(1.08,1) skew(0deg,1deg);
    -ms-transform: scale(1.08,1) skew(0deg,1deg);
    transform: scale(1.08,1) skew(0deg,1deg);
}
 
.ot-letter-left span:after {
    text-shadow: -1px 0px 0px hsla(360, 100%, 100%, 0.1), 3px 0px 1px hsla(0, 0%, 0%, 0.4);
    -webkit-transform: rotateY(-15deg);
    -ms-transform: rotateY(-15deg);
    transform: rotateY(-15deg);
}
 
.ot-letter-left:hover span:before {
    -webkit-transform: scale(0.85,1) skew(0deg,20deg);
    -ms-transform: scale(0.85,1) skew(0deg,20deg);
    transform: scale(0.85,1) skew(0deg,20deg);
}
 
.ot-letter-left:hover span:after {
    -webkit-transform: rotateY(-40deg);
    -ms-transform: rotateY(-40deg);
    transform: rotateY(-40deg);
}

Затем справа:

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
.ot-letter-right span:before,
.ot-letter-right span:after {
    -webkit-transform-origin: 100% 50%;
    -ms-transform-origin: 100% 50%;
    transform-origin: 100% 50%;
}
 
.ot-letter-right span:before {
    -webkit-transform: scale(0.85,1) skew(0deg,1deg);
    -ms-transform: scale(0.85,1) skew(0deg,1deg);
    transform: scale(0.85,1) skew(0deg,1deg);
}
 
.ot-letter-right span:after {
    text-shadow: 1px 0px 0px hsla(360, 100%, 100%, 0.1), -3px 0px 1px hsla(0, 0%, 0%, 0.4);
    -webkit-transform: rotateY(15deg);
    -ms-transform: rotateY(15deg);
    transform: rotateY(15deg);
}
 
.ot-letter-right:hover span:before {
    -webkit-transform: scale(0.85,1) skew(0deg,-20deg);
    -ms-transform: scale(0.85,1) skew(0deg,-20deg);
    transform: scale(0.85,1) skew(0deg,-20deg);
}
 
.ot-letter-right:hover span:after {
    -webkit-transform: rotateY(40deg);
    -ms-transform: rotateY(40deg);
    transform: rotateY(40deg);
}

Свойства для буквы, которая открывается вверх:

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
.ot-letter-top span:before,
.ot-letter-top span:after {
    -webkit-transform-origin: 50% 100%;
    -ms-transform-origin: 50% 100%;
    transform-origin: 50% 100%;
}
 
.ot-letter-top span:before {
    -webkit-transform: scale(1,0.95) skew(-4deg,0deg);
    -ms-transform: scale(1,0.95) skew(-4deg,0deg);
    transform: scale(1,0.95) skew(-4deg,0deg);
}
 
.ot-letter-top span:after {
    text-shadow: 0px 1px 0px hsla(360, 100%, 100%, 0.1), 0px -3px 1px hsla(0, 0%, 0%, 0.4);
    -webkit-transform: rotateX(-15deg);
    -ms-transform: rotateX(-15deg);
    transform: rotateX(-15deg);
}
 
.ot-letter-top:hover span:before {
    -webkit-transform: translateY(-0.050em) scale(1,0.55) skew(-10deg,0deg);
    -ms-transform: translateY(-0.050em) scale(1,0.55) skew(-10deg,0deg);
    transform: translateY(-0.050em) scale(1,0.55) skew(-10deg,0deg);
}
 
.ot-letter-top:hover span:after {
    -webkit-transform: translateY(-0.035em) rotateX(-40deg);
    -ms-transform: translateY(-0.035em) rotateX(-40deg);
    transform: translateY(-0.035em) rotateX(-40deg);
}

И осталась буква, которая открывается вниз:

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
.ot-letter-bottom span:before,
.ot-letter-bottom span:after {
    -webkit-transform-origin: 50% 0;
    -ms-transform-origin: 50% 0;
    transform-origin: 50% 0;
}
 
.ot-letter-bottom span:before {
    -webkit-transform: scale(1,1.05) skew(4deg,0deg);
    -ms-transform: scale(1,1.05) skew(4deg,0deg);
    transform: scale(1,1.05) skew(4deg,0deg);
}
 
.ot-letter-bottom span:after {
    text-shadow: 0px -1px 0px hsla(360, 100%, 100%, 0.1), 0px 3px 1px hsla(0, 0%, 0%, 0.4);
    -webkit-transform: rotateX(15deg);
    -ms-transform: rotateX(15deg);
    transform: rotateX(15deg);
}
 
.ot-letter-bottom:hover span:before {
    -webkit-transform: translateY(-0.035em) scale(1,1.2) skew(10deg,0deg);
    -ms-transform: translateY(-0.035em) scale(1,1.2) skew(10deg,0deg);
    transform: translateY(-0.035em) scale(1,1.2) skew(10deg,0deg);
}
 
.ot-letter-bottom:hover span:after {
    -webkit-transform: translateY(0.045em) rotateX(40deg);
    -ms-transform: translateY(0.045em) rotateX(40deg);
    transform: translateY(0.045em) rotateX(40deg);
}

Вывод

Классный эффект, который можно использовать для открытки. Можно лишь добавить оригинальные шрифты и изменить цвет по-своему усмотрению :).

Успехов!

Источник: tympanus.net

Потрясающий анимированный 3D текст 5.00/5 (100.00%) 2 голос(ов)

Понравилась статья - расскажи друзьям! :)

2 комментария к записи
  • Ольга

    Не знаю зачем такие сложности, фотошоп- простое и эффективное решение, если, это кому-то надо

     
  • Вячеслав

    Не плохо:)

     

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

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