<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Swish CSS3 folded ribbon effect.</title> <link href='http://fonts.googleapis.com/css?family=Montez' rel='stylesheet' type='text/css'> </head> <body> </body> </html>
Теперь добавим элемент ленточки. Да, именно один элемент нам и понадобится. В нашем случае мы используем h1 header:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Swish CSS3 folded ribbon effect.</title> <link href='http://fonts.googleapis.com/css?family=Montez' rel='stylesheet' type='text/css'> </head> <body> <h1 class="ribbon">Swish CSS3 folded ribbon effect.</h1> </body> </html>
html { background: url(black-linen.png); /* Black Linen http://subtlepatterns.com */ } body { margin: 0; padding: 100px 0 0 0; } .ribbon { padding: 0 25px; height: 80px; background: #c94700; color: #301607; position: relative; float: left; clear: left; font-family: 'Montez', cursive; font-size: 32px; line-height: 80px; text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); }
.ribbon:after { content: ""; display: block; width: 40px; height: 0px; position: absolute; right: 0; bottom: 0px; z-index: 20; border-bottom: 80px solid #de6625; border-right: 80px solid transparent; }
Шаг 4
Теперь нам нужно повернуть фигуру вот так:
По умолчанию объект будет поворачиваться вокруг своего центра. Нам же нужно чтобы опорной точкой стал правый нижний угол. Вот, что у нас получилось:
highlight="41-50" .ribbon:after { content: ""; display: block; width: 40px; height: 0px; position: absolute; right: 0; bottom: 0px; z-index: 20; border-bottom: 80px solid #de6625; border-right: 80px solid transparent; -webkit-transform: rotate(90deg); -webkit-transform-origin: right bottom; -moz-transform: rotate(90deg); -moz-transform-origin: right bottom; -o-transform: rotate(90deg); -o-transform-origin: right bottom; -ms-transform: rotate(90deg); -ms-transform-origin: right bottom; transform: rotate(90deg); transform-origin: right bottom; }
Каждый параметр transform:rotate переворачивает объект на 90°. А параметр transform-origin отвечает за опорную точку. Ну как выглядит? Шаг 5: Тени
Чтобы добавить немного объема эффекту, давайте поместим тени под изгиб. Это очень просто: мы будем использовать элемент :before и проделаем практически то же самое, что и с :after;
.ribbon:before { content: ""; display: block; width: 40px; height: 0px; position: absolute; right: 0; bottom: 0px; z-index: 10; border-bottom: 80px solid #000000; border-right: 80px solid transparent; -webkit-transform: rotate(80deg); -webkit-transform-origin: right bottom; -moz-transform: rotate(80deg); -moz-transform-origin: right bottom; -o-transform: rotate(80deg); -o-transform-origin: right bottom; -ms-transform: rotate(80deg); -ms-transform-origin: right bottom; transform: rotate(80deg); transform-origin: right bottom; }
Вот, что у нас получится: Шаг 6: Нежнее, еще нежнее
Поиграем немного с прозрачностью и не только.
.ribbon:before { content: ""; display: block; width: 20px; height: 0px; position: absolute; right: 0; bottom: 0px; z-index: 10; border-bottom: 80px solid rgba(0, 0, 0, 0.3); border-right: 80px solid transparent;
Мы поменяли цвет бордера #000000 на его RGBA эквивалент, что нормально для всех современных браузеров, включая IE9. Если вы хотите поддерживать ранние версии IE, то нужно прописать следующий код:
/* необходимо для IE 5, 6, 7 */ zoom: 1; /* прозрачость 30% */ filter: alpha(opacity=30);
Добавим похожую тень в самой ленте.
.ribbon { padding: 0 25px; height: 80px; background: #c94700; color: #301607; position: relative; float: left; clear: left; font-family: 'Montez', cursive; font-size: 32px; line-height: 80px; text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); -moz-box-shadow: -7px 7px 0px rgba(0, 0, 0, 0.3); -webkit-box-shadow: -7px 7px 0px rgba(0, 0, 0, 0.3); box-shadow: -7px 7px 0px rgba(0, 0, 0, 0.3); }
Вот, что получается:
Шаг 7: Обводка
Мы написали практически весь код для ленточки, осталось только внести пару дополнений.
.ribbon { padding: 0 25px; height: 80px; color: #301607; background-color: #c94700; background-image: -webkit-gradient(linear, left top, left bottom, from(#c94700), to(#b84100)); background-image: -webkit-linear-gradient(top, #c94700, #b84100); background-image: -moz-linear-gradient(top, #c94700, #b84100); background-image: -ms-linear-gradient(top, #c94700, #b84100); background-image: -o-linear-gradient(top, #c94700, #b84100); background-image: linear-gradient(top, #c94700, #b84100); border-bottom: 1px solid rgba(255, 255, 255, 0.3);
Мы добавили легкий градиент на ленту и обводку по нижнему краю:
.ribbon:after { content: ""; display: block; width: 40px; height: 0px; position: absolute; right: 0; bottom: -1px; z-index: 20;
Шаг 8: Последний штрих
Теперь давайте сгладим нижний угол:
[39] border-bottom-right-radius: 20px 5px; [50] bottom: 4px; [76] bottom: 4px;