вход

Кнопки CSS3 с закругленными краями и иконками

Кнопки CSS3 с закругленными краями и иконками

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

В этой статье вы узнаете, как создать классные CSS3 кнопки всего за несколько шагов.

Сегодня мы создадим кнопки с закругленными краями и с иконками при помощи CSS3. Возможно кто-то подумает, что такие кнопки очень легко создать в Photoshop, но не спешите делать выводы. Прочитаете до конца, и вы увидите те преимущества которые дает использование CSS. Чтобы создать кнопки мы будем использовать градиенты, тени и округления, которые доступны в CSS3. В качестве иконок используем обычные текстовые символы, задавая их HTML код.

Как это выглядит

Кнопки CSS3 с закругленными краями и иконками

Начальная разметка

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

<a href="" class="button">Кнопка</a>

Здесь мы получаем обычную кнопку без иконки.

Чтобы добавить нужную иконку, нужно просто добавить нужный стиль. У меня прописаны несколько стилей с соответствующими иконками, но вы можете легко создавать свои, нужные вам стили кнопок.

<a href="" class="button add">Добавить</a>

Здесь мы получаем кнопку плюс иконку «добавить».

Комбинируя назначение стилей можно получить различные варианты кнопок.

CSS

Ниже мы создаем стили, используемые для создания кнопок и иконок:

 

.button
{
        display: inline-block;
        white-space: nowrap;
        background-color: #ccc;
        background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#ccc));
        background-image: -webkit-linear-gradient(top, #eee, #ccc);
        background-image: -moz-linear-gradient(top, #eee, #ccc);
        background-image: -ms-linear-gradient(top, #eee, #ccc);
        background-image: -o-linear-gradient(top, #eee, #ccc);
        background-image: linear-gradient(top, #eee, #ccc);
        filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#eeeeee', EndColorStr='#cccccc');
        border: 1px solid #777;
        padding: 0 1.5em;
        margin: 0.5em;
        font: bold 1em/2em Arial, Helvetica;
        text-decoration: none;
        color: #333;
        text-shadow: 0 1px 0 rgba(255,255,255,.8);
        -moz-border-radius: .2em;
        -webkit-border-radius: .2em;
        border-radius: .2em;
        -moz-box-shadow: 0 0 1px 1px rgba(255,255,255,.8) inset, 0 1px 0 rgba(0,0,0,.3);
        -webkit-box-shadow: 0 0 1px 1px rgba(255,255,255,.8) inset, 0 1px 0 rgba(0,0,0,.3);
        box-shadow: 0 0 1px 1px rgba(255,255,255,.8) inset, 0 1px 0 rgba(0,0,0,.3);
}

.button:hover
{
        background-color: #ddd;
        background-image: -webkit-gradient(linear, left top, left bottom, from(#fafafa), to(#ddd));
        background-image: -webkit-linear-gradient(top, #fafafa, #ddd);
        background-image: -moz-linear-gradient(top, #fafafa, #ddd);
        background-image: -ms-linear-gradient(top, #fafafa, #ddd);
        background-image: -o-linear-gradient(top, #fafafa, #ddd);
        background-image: linear-gradient(top, #fafafa, #ddd);
        filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#fafafa', EndColorStr='#dddddd');
}

.button:active
{
        -moz-box-shadow: 0 0 4px 2px rgba(0,0,0,.3) inset;
        -webkit-box-shadow: 0 0 4px 2px rgba(0,0,0,.3) inset;
        box-shadow: 0 0 4px 2px rgba(0,0,0,.3) inset;
        position: relative;
        top: 1px;
}

.button:focus
{
        outline: 0;
        background: #fafafa;
}    

.button:before
{
        background: #ccc;
        background: rgba(0,0,0,.1);
        float: left;
        width: 1em;
        text-align: center;
        font-size: 1.5em;
        margin: 0 1em 0 -1em;
        padding: 0 .2em;
        -moz-box-shadow: 1px 0 0 rgba(0,0,0,.5), 2px 0 0 rgba(255,255,255,.5);
        -webkit-box-shadow: 1px 0 0 rgba(0,0,0,.5), 2px 0 0 rgba(255,255,255,.5);
        box-shadow: 1px 0 0 rgba(0,0,0,.5), 2px 0 0 rgba(255,255,255,.5);
        -moz-border-radius: .15em 0 0 .15em;
        -webkit-border-radius: .15em 0 0 .15em;
        border-radius: .15em 0 0 .15em;
}

/* Hexadecimal entities for the icons */

.add:before
{
        content: "\271A";
}

.edit:before
{
        content: "\270E";
}

.delete:before
{
        content: "\2718";
}

.save:before
{
        content: "\2714";
}

.email:before
{
        content: "\2709";
}

.like:before
{
        content: "\2764";
}

.next:before
{
        content: "\279C";
}

.star:before
{
        content: "\2605";
}

.spark:before
{
        content: "\2737";
}

.play:before
{
        content: "\25B6";
}

 

Зачем использовать стили, а не изображения?

Используя стили CSS, мы получаем несколько преимуществ, таких, как:

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

Скорость

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

Масштабируемость

Чтобы изменить размеры кнопки, вам нужно изменить всего лишь один параметр font-size

font: bold 1em/2em Arial, Helvetica;

Отображение и поддержка браузерами

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

Заключение.

Надеюсь, вам понравились кнопки, созданные при помощи CSS3. Если у вас есть замечания, можете свободно оставить их в комментариях. Спасибо за внимание!

Качественные премиум темы и шаблоны для Вашего сайта:

Смотреть полный каталог качественных тем и шаблонов

Здесь Вы можете выбрать из более чем 46 000 готовых дизайнов. Шаблоны сайтов + установка + хостинг + персонализация + поисковая оптимизация + копирайтинг — все эти услуги вы всегда можете получить от профессионалов мирового уровня!


Нашли это полезным? Поделитесь с другими:
Не останавливайтесь, читайте дальше:
Один комментарий :

Статья → Кнопки CSS3 с закругленными краями и иконками

  1. Полбутылки:

    В Opera после первого нажатия в исходное состояние уже не возвращается

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

Статья → Кнопки CSS3 с закругленными краями и иконками

Правила комментирования

  1. Кoммeнтapий всегда проходит премодерацию.
  2. В поле "URL блога" можно указывать только ссылку на главную страницу вашего блога. Ссылки на прочие веб-ресурсы (в том числе блоги/сплоги, созданные не для людей) будут удалены.
  3. Запрещается использовать в качестве имени комментатора слоганы/названия сайтов, рекламные фразы, ключевые и т.п. слова. В случае несоблюдения этого условия имя изменяется по усмотрению владельца блога. Просьба указывать нормальное имя или ник.
  4. Весьма вероятно, что короткий и неинформативный кoммeнтapий вида "Спасибо!", "Интересная статья", будет удален. Исключение составляют знакомые автору блога комментаторы.