Эффект открывающихся букв на CSS3
827материалов
228тем на форуме
3004комментария
6157пользователей

Эффект открывающихся букв на CSS3


Описание:

Сейчас, после прочтения множества мануалов и уроков по CSS3, вы начинаете все больше использовать CSS3 в своих проектах. Все, что вам не хватает — это готовые примеры, готовые реализации. Именно этим мы сегодня займемся — изучим несколько простых, но при этом эффектных трюков по работе с текстом, а о есть с буквами. Хочу Вам представить необычный эффект открывающихся букв. Создаётся такое впечатление, что они вырезаны на цветном картоне.

Установка:

1: В самый низ вашего CSS вставьте:
Код
.grid {
margin: 0;
padding: 0;
list-style: none;
position: relative;
width: 100%;
}

.grid li {
position: relative;
float: left;
font-size: 12em;
line-height: 1.5;
max-height: 290px;
text-align: center;
width: 16.6666667%;
/* Fallback */
width: -webkit-calc(100% / 6);
width: calc(100% / 6);
}

/* Common styles for the letters */
.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);
}

/* Colors */

.ot-letter-left { background: #e74d3c; }
.ot-letter-left span { text-shadow: 1px 4px 6px #e74d3c, 0 0 0 hsla(0, 0%, 0%, 0.3), 1px 4px 6px #e74d3c; }
.ot-letter-left span:after { color: #e74d3c; }
.ot-letter-left:hover span:after { color: #ea6253; }

.ot-letter-right { background: #ea6657; }
.ot-letter-right span { text-shadow: 1px 4px 6px #ea6657, 0 0 0 hsla(0, 0%, 0%, 0.3), 1px 4px 6px #ea6657; }
.ot-letter-right span:after { color: #ea6657; }
.ot-letter-right:hover span:after { color: #ed7a6e; }

.ot-letter-top { background: #ee7f72; }
.ot-letter-top span { text-shadow: 1px 4px 6px #ee7f72, 0 0 0 hsla(0, 0%, 0%, 0.3), 1px 4px 6px #ee7f72; }
.ot-letter-top span:after { color: #ee7f72; }
.ot-letter-top:hover span:after { color: #f09389; }

.ot-letter-bottom { background: #e95949; }
.ot-letter-bottom span { text-shadow: 1px 4px 6px #e95949, 0 0 0 hsla(0, 0%, 0%, 0.3), 1px 4px 6px #e95949; }
.ot-letter-bottom span:after { color: #e95949; }
.ot-letter-bottom:hover span:after { color: #eb6e60; }

/* Left */
.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);
}

/* Right */
.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);
}

/* Up */
.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);
}

/* Down */
.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);
}

/* Example for media query: change number of items per row */
@media screen and (max-width: 1190px) {
.grid li {
width: 20%;
/* Fallback */
width: -webkit-calc(100% / 5);
width: calc(100% / 5);
}
}

@media screen and (max-width: 945px) {
.grid li {
width: 25%;
/* Fallback */
width: -webkit-calc(100% / 4);
width: calc(100% / 4);
}
}

@media screen and (max-width: 760px) {
.grid li {
width: 33.3333333%;
/* Fallback */
width: -webkit-calc(100% / 3);
width: calc(100% / 3);
}
}

@media screen and (max-width: 560px) {
.grid li {
width: 50%;
/* Fallback */
width: -webkit-calc(100% / 2);
width: calc(100% / 2);
}
}

@media screen and (max-width: 340px) {
.grid li {
width: 100%;
}
}

2: Блоки с буквами оформляются так:
Код
<div class="component">
<ul class="grid">
<li class="ot-letter-left"><span data-letter="C">C</span></li>
<li class="ot-letter-top"><span data-letter="J">J</span></li>
<li class="ot-letter-right"><span data-letter="8">8</span></li>
<li class="ot-letter-bottom"><span data-letter="A">A</span></li>
<li class="ot-letter-left"><span data-letter="O">O</span></li>
<li class="ot-letter-left"><span data-letter="Q">Q</span></li>
<li class="ot-letter-right"><span data-letter="S">S</span></li>
<li class="ot-letter-left"><span data-letter="B">B</span></li>
<li class="ot-letter-top"><span data-letter="L">L</span></li>
<li class="ot-letter-right"><span data-letter="T">T</span></li>
<li class="ot-letter-left"><span data-letter="K">K</span></li>
<li class="ot-letter-top"><span data-letter="S">S</span></li>
<li class="ot-letter-left"><span data-letter="Z">Z</span></li>
<li class="ot-letter-top"><span data-letter="3">3</span></li>
<li class="ot-letter-right"><span data-letter="D">D</span></li>
<li class="ot-letter-bottom"><span data-letter="I">I</span></li>
<li class="ot-letter-right"><span data-letter="H">H</span></li>
<li class="ot-letter-bottom"><span data-letter="Q">Q</span></li>
<li class="ot-letter-right"><span data-letter="E">E</span></li>
<li class="ot-letter-left"><span data-letter="A">A</span></li>
<li class="ot-letter-top"><span data-letter="P">P</span></li>
<li class="ot-letter-right"><span data-letter="F">F</span></li>
<li class="ot-letter-left"><span data-letter="S">S</span></li>
<li class="ot-letter-top"><span data-letter="K">K</span></li>
<li class="ot-letter-left"><span data-letter="U">U</span></li>
<li class="ot-letter-top"><span data-letter="L">L</span></li>
<li class="ot-letter-right"><span data-letter="6">6</span></li>
<li class="ot-letter-bottom"><span data-letter="R">R</span></li>
<li class="ot-letter-left"><span data-letter="O">O</span></li>
<li class="ot-letter-bottom"><span data-letter="V">V</span></li>
<li class="ot-letter-right"><span data-letter="S">S</span></li>
<li class="ot-letter-left"><span data-letter="Q">Q</span></li>
<li class="ot-letter-top"><span data-letter="J">J</span></li>
<li class="ot-letter-right"><span data-letter="G">G</span></li>
<li class="ot-letter-left"><span data-letter="R">R</span></li>
</ul>
</div>

P.S. Русские буквы тоже поддерживаются

ПОСМОТРЕТЬ ДЕМО ЗАКАЗАТЬ УСТАНОВКУ

Скрипт опубликовал:
...
Логин на сайте: ...
Группа: ...
Статус: ...
Информация о скрипте:
Дата добавления материала: 05.02.2016 в 15:30
Материал просмотрен: 1309 раз
Категория материала: Скрипты для uCoz
К материалу оставлено: 7 комментариев

Пожаловаться
Сказать спасибо
Источник

7 комментариев


schoolonly
Красиво,конечно,но где это может пригодиться?Хотя...Название таким можно сделать...Можно другой шрифт?
ДонКот
шрифт можно, конечно же другой, если вы его пропишите в стилях сами
AlexGraur
Alex Graur @AlexGraur 06.02.2016 11:502
+1
интересно, убавить можно конечно размеры и для названия, что я и хочу сделать, но как сделать к примеру:
1. в мобильной версии отредактировать где конкретно размеры чтобы не выезжало друг за друга
2. как отцентрировать? вечная проблема для меня как поставить дивы по центру(((


это конкретно что я сделал - но надо его сделать по центру - а они тока слева идут(
и второе:

получаем в мобильной версии (или просто окно сделайте меньше браузера) и они идут друг на друга - вот это где можно исправить конкретно?
Спасибо за помощь!
ДонКот
все мобильные стили начинаются с @media, выше вы их видите, поиграйте с параметрами ширины px и % , конкретно под вас у меня нет времени настраивать данный скрипт. Обратитесь к администратору сайт за платной услугой
AlexGraur
Alex Graur @AlexGraur 06.02.2016 16:176
0
спасибо, а центрирование как задать для div? или напишите пост по этому - эти div для большинства морока - постоянно не поставишь не вправо, не поцентру тока слева идут и все
AlexGraur
Alex Graur @AlexGraur 06.02.2016 11:513
+2
очень удобно в подвал сайта поставить к примеру) это как пример просто)
а также как к примеру сделать пробел?
kazik2220
кто подскажет, как сделать задний фон букв немного прозрачным?? а то как то не вписывается в шапку. а очень хочется использовать эту фишку,помогите плиз
avatar
Вход через социальные сети
Работа в компании uCoz
uSocial - социальные кнопки
uLike – кнопка «Мне нравится»
Статистики нашего сайта