Эффект 3D ленты для заголовка

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

Думаю с эффектом представленным на картинке выше, вам приходилось встечаться на просторах интернета. Ранее его реализовывали при помощи нарезки изображений, а сегодня мы реализуем данный пример используя только CSS и HTML.
Эффект 3D ленты

 

Шаг 1. HTML структура

HTML структура - шаг 1

    <div class="module"> 

        <div class="module-title">
            <h3><span>Заголовок модуля</span></h3> 
            <div class="triangle-l"></div> 
            <div class="triangle-r"></div>
        </div>
        <div class="module-body"> 
            <p>Здесь будет текст, картинка, список, меню или что-то в этом роде<p/>  
        </div> 

    </div>

Структура довольно проста, дивы с классами triangle-l и triangle-r, буду использованы для создания тех саых треугольничков, чтобы добиться 3D эффекта глубины.

Шаг 2. Добавление стилей

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

   .module {
        margin: 0 auto;
        padding-top: 20px;
        background: #eeeeee;
        color: #333;
        width: 250px; 
   }

Заголовку дадим 100% ширину и установим свойство padding: 10px 15px; чтобы он вылазил за рамки модуля. Стилизуем тег h3 и p:

   .module-title {
        position: relative;
        width: 100%;
        padding: 10px 15px;
        background: #0077e8;
   }
   .module-title h3{
        text-align: center;
        margin: 0;
        color: #fff;
        /*shadow*/    
        text-shadow: 0px 1px 0px #000; 
   }
   .module-body {padding: 0 10px 10px;}

Шаг 2 - Стили

Сдвиним наш заголовок влево на -15px и напишем стили для triangle-l и triangle-r:

   .module-title {
        ...

        margin: 0 0 0 -15px;
   }

   .triangle-l {
        border-color: transparent transparent transparent #036;
        border-style: solid;
        border-width: 15px;
        width: 0; height: 0;
        line-height: 0;
   }
   .triangle-r {
        border-color: transparent #036 transparent transparent;
        border-style: solid;
        border-width: 15px;
        width: 0; height: 0;
        line-height: 0;
    }

Шаг 2 -стили

Несложно заметить, что наши треугольники как-то недоработаны 🙂

Дадим им абсолютное позиционирование и позиции по краям заголовка, также объеденим общие свойства у классов triangle-l и triangle-r:

.triangle-l, .triangle-r {
        position: absolute;
        bottom: -15px; right: -15px;
        z-index: -1;

        border-color: transparent transparent transparent #036;
        border-style: solid;
        border-width: 15px;
        width: 0; height: 0;
        line-height: 0;
   }
   .triangle-r {
        bottom: -15px; left: -15px;
        border-color: transparent #036 transparent transparent;
    }

Шаг 2 -стили

Шаг 3. CSS3 стили

Раз шаг называется CSS3 стили, то будем полностью верны названию 🙂

Избавимся от дивов triangle-l и triangle-r  и воспользуемся псевдо-элементами ::after и ::before

HTML стал таким:

    <div class="module"> 

        <div class="module-title">
            <h3><span>Заголовок модуля</span></h3> 
        </div>
        <div class="module-body"> 
            <p>Здесь будет текст, картинка, список, меню или что-то в этом роде<p/>  
        </div> 

    </div>

а CSS код стал таким:

   .module {
        margin: 0 auto;
        padding-top: 20px;
        background: #eeeeee;
        color: #333;
        width: 250px; 
   }
   .module-title {
        position: relative;
        width: 100%;
        padding: 10px 15px;
        margin: 0 0 0 -15px;
        background: #0077e8;
   }
   .module-title h3{
        text-align: center;
        margin: 0;
        color: #fff;
        /*shadow*/    
        text-shadow: 0px 1px 0px #000; 
   }
   .module-body {padding: 0 10px 10px;}

   .module-title::after, .module-title::before {
        content: '';
        position: absolute;
        bottom: -15px; right: -15px;
        z-index: -1;

        border-color: transparent transparent transparent #036;
        border-style: solid;
        border-width: 15px;
        width: 0; height: 0;
        line-height: 0;
   }
   .module-title::before {
        bottom: -15px; left: -15px;
        border-color: transparent #036 transparent transparent;
    }

 

Добавим немного теней и градиентной заливки:

.module {
        margin: 0 auto;
        padding-top: 20px;
        background: #eeeeee;
        color: #fff;
        width: 250px; 

        /*border radius*/
        -webkit-border-radius: 2px;
        border-radius: 2px;

        /*shadow*/
        -moz-box-shadow: 0px 3px 10px #000000;
        -webkit-box-shadow: 0px 3px 10px #000000;
        box-shadow: 0px 3px 10px #000000;

        /*gradient*/
        background: #a90329;
        background: -moz-linear-gradient(top,  #a90329 0%, #8f0222 44%, #6d0019 100%);
        background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#a90329), color-stop(44%,#8f0222), color-stop(100%,#6d0019));
        background: -webkit-linear-gradient(top,  #a90329 0%,#8f0222 44%,#6d0019 100%);
        background: -o-linear-gradient(top,  #a90329 0%,#8f0222 44%,#6d0019 100%);
        background: -ms-linear-gradient(top,  #a90329 0%,#8f0222 44%,#6d0019 100%);
        background: linear-gradient(to bottom,  #a90329 0%,#8f0222 44%,#6d0019 100%);
        filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a90329', endColorstr='#6d0019',GradientType=0 );
   }
   .module-title {
        position: relative;
        width: 100%;
        padding: 10px 15px;
        margin: 0 0 0 -15px;
        background: #0077e8;

        /*shadow*/
        -moz-box-shadow: 0px 1px 3px #000000;
        -webkit-box-shadow: 0px 1px 3px #000000;
        box-shadow: 0px 1px 3px #000000;

        /*gradient*/
        background: #7abcff;
        background: -moz-linear-gradient(top,  #7abcff 0%, #60abf8 44%, #4096ee 100%);
        background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#7abcff), color-stop(44%,#60abf8), color-stop(100%,#4096ee));
        background: -webkit-linear-gradient(top,  #7abcff 0%,#60abf8 44%,#4096ee 100%);
        background: -o-linear-gradient(top,  #7abcff 0%,#60abf8 44%,#4096ee 100%);
        background: -ms-linear-gradient(top,  #7abcff 0%,#60abf8 44%,#4096ee 100%);
        background: linear-gradient(to bottom,  #7abcff 0%,#60abf8 44%,#4096ee 100%);
        filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#7abcff', endColorstr='#4096ee',GradientType=0 );

   }

Шаг 3 - CSS3 стили

 

(3 голосов. Рейтинг: 5,00 из 5)
Загрузка...

Метки: ,

Рубрика: CSS, HTML

Комментарии (3)

| RSS комментария

  1. Добрый день, на локальной версии сайта (сайт без CMS) все работает без нареканий.
    Выгрузил сайт на хостинг и Опа… Ленты нет. Запускаю локальный index.html все на месте. LoL )) В чем может быть проблема?

    • WebCo:

      я постараюсь сделать рабочий демо-пример и тогда вам отпишусь

    • WebCo:

      Вы знаете я поправил демо-пример, точнее сделал его доступным 🙂
      Код работает. В вашем случае проверьте какие стили наследуются элементами 3D ленты, возможно в коде(стилях) CMS используются те же имена классов и перекрываются свойства.
      Или киньте ссылку я посмотрю 😉

Оставьте свой комментарий