Webmasters.BY

Главная Статьи Верстка сайтов CSS кнопки с псевдо-элементами
CSS кнопки с псевдо-элементами
Рейтинг пользователей: / 1
ХудшийЛучший 
13.01.2012 00:00

CSS кнопки с псевдо-элементами

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

В этом уроке я покажу вам, как создать симпатичные кнопки с изюминкой, при помощи одного только тега А и всей мощи  CSS.

В примерах используется шрифт "Open Sans" Steve Matteson-а.

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

Я избегал использование CSS переходов, поскольку, на данный момент, Firefox является единственным браузером, поддерживающим их для псевдо-элементов. Кроме того, я считаю, что эти кнопки работают нормально и без них.

Структура всех этих кнопок очень простая, нам нужен всего лишь один тег А для работы, так как все остальные элементы мы будем создавать при помощи псевдо-класса ::before.

HTML-разметка

<a href="#" class="a_demo_one">
 Click me!
</a>

Пример 1

CSS кнопки с псевдо-элементами. Пример 1

Я думаю, что это самый простой пример, с обычным CSS-кодом.

CSS

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

.a_demo_one {
 background-color:#ba2323;
 padding:10px;
 position:relative;
 font-family: 'Open Sans', sans-serif;
 font-size:12px;
 text-decoration:none;
 color:#fff;
 border: solid 1px #831212;
 background-image: linear-gradient(bottom, rgb(171,27,27) 0%, rgb(212,51,51) 100%);
 border-radius: 5px;
}

.a_demo_one:active {
 padding-bottom:9px;
 padding-left:10px;
 padding-right:10px;
 padding-top:11px;
 top:1px;
 background-image: linear-gradient(bottom, rgb(171,27,27) 100%, rgb(212,51,51) 0%);
}

Затем, мы создаем серый контейнер, используя псевдо-элемент ::before. Абсолютное позиционирование упростит нашу работу:

.a_demo_one::before {
 background-color:#ccd0d5;
 content:"";
 display:block;
 position:absolute;
 width:100%;
 height:100%;
 padding:8px;
 left:-8px;
 top:-8px;
 z-index:-1;
 border-radius: 5px;
 box-shadow: inset 0px 1px 1px #909193, 0px 1px 0px #fff;
}

Пример 2

CSS кнопки с псевдо-элементами. Пример 2

Это кнопка немного сложнее из-за 3D-эффекта. Она находится вне её "контейнера", но когда вы щелкните по ней, она опускается вниз:

CSS

.a_demo_two {
 background-color:#6fba26;
 padding:10px;
 position:relative;
 font-family: 'Open Sans', sans-serif;
 font-size:12px;
 text-decoration:none;
 color:#fff;
 background-image: linear-gradient(bottom, rgb(100,170,30) 0%, rgb(129,212,51) 100%);
 box-shadow: inset 0px 1px 0px #b2f17f, 0px 6px 0px #3d6f0d;
 border-radius: 5px;
}

.a_demo_two:active {
 top:7px;
 background-image: linear-gradient(bottom, rgb(100,170,30) 100%, rgb(129,212,51) 0%);
 box-shadow: inset 0px 1px 0px #b2f17f, inset 0px -1px 0px #3d6f0d;
 color: #156785;
 text-shadow: 0px 1px 1px rgba(255,255,255,0.3);
 background: rgb(44,160,202);
}

А это довольно сложная часть:

Так как положение псевдо-элемента зависит от его родительского элемента, то при перемещении родительского элемента вниз на несколько пикселей, мы должны на такое количество пикселов переместить вверх псевдо-элемент.

.a_demo_two::before {
 background-color:#072239;
 content:"";
 display:block;
 position:absolute;
 width:100%;
 height:100%;
 padding-left:2px;
 padding-right:2px;
 padding-bottom:4px;
 left:-2px;
 top:5px;
 z-index:-1;
 border-radius: 6px;
 box-shadow: 0px 1px 0px #fff;
}

.a_demo_two:active::before {
 top:-2px;
}

Пример 3

CSS кнопки с псевдо-элементами. Пример 3

Я думаю, что это одна из моих любимых кнопок, поскольку она была первой, которую я сделал таким образом, и людям, кажется, она очень нравится. Кнопка разделена на две половинки, и как только вы щелкните по ней, она как бы "ломается".

CSS

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

.a_demo_three {
 background-color:#3bb3e0;
 font-family: 'Open Sans', sans-serif;
 font-size:12px;
 text-decoration:none;
 color:#fff;
 position:relative;
 padding:10px 20px;
 border-left:solid 1px #2ab7ec;
 margin-left:35px;
 background-image: linear-gradient(bottom, rgb(44,160,202) 0%, rgb(62,184,229) 100%);
 border-top-right-radius: 5px;
 border-bottom-right-radius: 5px;
 box-shadow: inset 0px 1px 0px #2ab7ec, 0px 5px 0px 0px #156785, 0px 10px 5px #999;
}

.a_demo_three:active {
 top:3px;
 background-image: linear-gradient(bottom, rgb(62,184,229) 0%, rgb(44,160,202) 100%);
 box-shadow: inset 0px 1px 0px #2ab7ec, 0px 2px 0px 0px #156785, 0px 5px 3px #999;
}

Теперь CSS-код для псевдо-элемента:

.a_demo_three::before {
 content:"·";
 width:35px;
 max-height:29px;
 height:100%;
 position:absolute;
 display:block;
 padding-top:8px;
 top:0px;
 left:-36px;
 font-size:16px;
 font-weight:bold;
 color:#8fd1ea;
 text-shadow:1px 1px 0px #07526e;
 border-right:solid 1px #07526e;
 background-image: linear-gradient(bottom, rgb(10,94,125) 0%, rgb(14,139,184) 100%);
 border-top-left-radius: 5px;
 border-bottom-left-radius: 5px;
 box-shadow:inset 0px 1px 0px #2ab7ec, 0px 5px 0px 0px #032b3a, 0px 10px 5px #999 ;
}

.a_demo_three:active::before {
 top:-3px;
 box-shadow:inset 0px 1px 0px #2ab7ec, 0px 5px 0px 0px #032b3a, 1px 1px 0px 0px #044a64, 2px 2px 0px 0px #044a64, 2px 5px 0px 0px #044a64, 6px 4px 2px #0b698b, 0px 10px 5px #999 ;
}

Пример 4

CSS кнопки с псевдо-элементами. Пример 4

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

CSS

.a_demo_four {
 background-color:#4b3f39;
 font-family: 'Open Sans', sans-serif;
 font-size:12px;
 text-decoration:none;
 color:#fff;
 position:relative;
 padding:10px 20px;
 padding-right:50px;
 background-image: linear-gradient(bottom, rgb(62,51,46) 0%, rgb(101,86,78) 100%);
 border-radius: 5px;
 box-shadow: inset 0px 1px 0px #9e8d84, 0px 5px 0px 0px #322620, 0px 10px 5px #999;
}

.a_demo_four:active {
 top:3px;
 background-image: linear-gradient(bottom, rgb(62,51,46) 100%, rgb(101,86,78) 0%);
 box-shadow: inset 0px 1px 0px #9e8d84, 0px 2px 0px 0px #322620, 0px 5px 3px #999;
}

.a_demo_four::before {
 background-color:#322620;
 background-image:url(../images/right_arrow.png);
 background-repeat:no-repeat;
 background-position:center center;
 content:"";
 width:20px;
 height:20px;
 position:absolute;
 right:15px;
 top:50%;
 margin-top:-9px;
 border-radius: 50%;
 box-shadow: inset 0px 1px 0px #19120f, 0px 1px 0px #827066;
}

.a_demo_four:active::before {
 top:50%;
 margin-top:-12px;
 box-shadow: inset 0px 1px 0px #827066, 0px 3px 0px #19120f, 0px 6px 3px #382e29;
}

Пример 5

CSS кнопки с псевдо-элементами. Пример 5

Этот пример немного "сырой", я знаю, но вы можете попробовать его немного доработать.

CSS

.a_demo_five {
 background-color:#9827d3;
 width:150px;
 display:inline-block;
 font-family: 'Open Sans', sans-serif;
 font-size:12px;
 text-decoration:none;
 color:#fff;
 position:relative;
 margin-top:40px;
 padding-bottom:10px;
 padding-top:10px;
 background-image: linear-gradient(bottom, rgb(168,48,232) 100%, rgb(141,32,196) 0%);
 border-bottom-right-radius: 5px;
 border-bottom-left-radius: 5px;
 box-shadow: inset 0px 1px 0px #ca73f8, 0px 5px 0px 0px #6a1099, 0px 10px 5px #999;
}

.a_demo_five:active {
 top:3px;
 background-image: linear-gradient(bottom, rgb(168,48,232) 0%, rgb(141,32,196) 100%);
 box-shadow: inset 0px 4px 1px #7215a3, 0px 2px 0px 0px #6a1099, 0px 5px 3px #999;
}

.a_demo_five::before {
 background-color:#fff;
 background-image:url(../images/heart.gif);
 background-repeat:no-repeat;
 background-position:center center;
 border-left:solid 1px #CCC;
 border-top:solid 1px #CCC;
 border-right:solid 1px #CCC;
 content:"";
 width:148px;
 height:40px;
 position:absolute;
 top:-30px;
 left:0px;
 margin-top:-11px;
 z-index:-1;
 border-top-left-radius: 5px;
 border-top-right-radius: 5px;
}

.a_demo_five:active::before {
 top: -33px;
 box-shadow: 0px 3px 0px #ccc;
}

Заключение

Вот и всё. Но помните, что эти кнопки пока еще экспериментальные, и не каждый браузер отображает их корректно.

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

Скачать исходники

Перевод статьи с tympanus.net/codrops

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


Защитный код
Обновить

Если вы заметили ошибку в тексте новости, пожалуйста, выделите её и нажмите Ctrl+Enter

Если у Вас возникли вопросы, то для скорейшего получения ответа рекомендуем воспользоваться нашим форумом

Обновлено 13.01.2012 11:46
 

Апельсин-1

Голосование

Ваш любимый html-редактор?

Новые файлы

Шпаргалка по HTML5 Canvas

Archive - бесплатный кириллический шрифт

Шпаргалка по HTML5 атрибутам обработчиков событий

См. также

activecloud.ru

TisRef

Баннер
Система Orphus

Кто онлайн

Сейчас 165 гостей онлайн

Комментарии

Статистика