Красивые градиентные кнопки без картинок для всех браузеров

1243
7.4 из 10
Проголосовало: 3




HTML

Code
<a href="#" class="button button-blue">
  <span>Button</span>
</a>

Вложенный <span> используется для добавления текстуры и верхнего белого бордера:

Верхний бордер можно было сделать и с помощью inset box-shadow, но тогда кнопки не подходили бы под понятие graceful degradation. Ниже в статье будет показана разница.

CSS

Для начала рассмотрим общие для всех кнопок (класс button) стили:

Code
.button {
  margin: 10px;
  text-decoration: none;
  font: bold 1.5em 'Trebuchet MS',Arial, Helvetica; /* Изменяйте em для масштабирования кнопки */
  display: inline-block;
  text-align: center;
  color: #fff;
   
  border: 1px solid #9c9c9c; /* Запасной стиль */
  border: 1px solid rgba(0, 0, 0, 0.3);  
   
  text-shadow: 0 1px 0 rgba(0,0,0,0.4);
   
  box-shadow: 0 0 .05em rgba(0,0,0,0.4);
  -moz-box-shadow: 0 0 .05em rgba(0,0,0,0.4);
  -webkit-box-shadow: 0 0 .05em rgba(0,0,0,0.4);
}

.button, .button span {
  -moz-border-radius: .3em;
  border-radius: .3em;
}

.button span {
  border-top: 1px solid #fff; /* Fallback style */
  border-top: 1px solid rgba(255, 255, 255, 0.5);
  display: block;
  padding: 0.5em 2.5em;
   
  /* Фоновый паттерн */
   
  background-image: -webkit-gradient(linear, 0 0, 100% 100%, color-stop(.25, rgba(0, 0, 0, 0.05)), color-stop(.25, transparent), to(transparent)),
  -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(0, 0, 0, 0.05)), color-stop(.25, transparent), to(transparent)),
  -webkit-gradient(linear, 0 0, 100% 100%, color-stop(.75, transparent), color-stop(.75, rgba(0, 0, 0, 0.05))),
  -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.75, transparent), color-stop(.75, rgba(0, 0, 0, 0.05)));
  background-image: -moz-linear-gradient(45deg, rgba(0, 0, 0, 0.05) 25%, transparent 25%, transparent),
  -moz-linear-gradient(-45deg, rgba(0, 0, 0, 0.05) 25%, transparent 25%, transparent),
  -moz-linear-gradient(45deg, transparent 75%, rgba(0, 0, 0, 0.05) 75%),
  -moz-linear-gradient(-45deg, transparent 75%, rgba(0, 0, 0, 0.05) 75%);

  /* Настройки паттерна */
   
  -moz-background-size: 3px 3px;
  -webkit-background-size: 3px 3px;  
}

.button:hover {
  box-shadow: 0 0 .1em rgba(0,0,0,0.4);
  -moz-box-shadow: 0 0 .1em rgba(0,0,0,0.4);
  -webkit-box-shadow: 0 0 .1em rgba(0,0,0,0.4);
}

.button:active {
  /* Опускаем на 1px при нажатии */
  position: relative;
  top: 1px;
}

Теперь посмотрим на нашу синию кнопку:

Code
.button-blue {
  background: #4477a1;
  background: -webkit-gradient(linear, left top, left bottom, from(#81a8cb), to(#4477a1) );
  background: -moz-linear-gradient(-90deg, #81a8cb, #4477a1);
  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#81a8cb', endColorstr='#4477a1');
}

.button-blue:hover {
  background: #81a8cb;
  background: -webkit-gradient(linear, left top, left bottom, from(#4477a1), to(#81a8cb) );
  background: -moz-linear-gradient(-90deg, #4477a1, #81a8cb);
  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#4477a1', endColorstr='#81a8cb');  
}

.button-blue:active {
  background: #4477a1;
}

Остальные кнопки делаются по аналогии, заменяя цвета.

Поддержка браузерами

демо

Автор публикации: Загрузка
Загрузка
Вовчик, это его n материал
Источник: http://www.red-team-design.com/cross-browser-css-gradient-bu...
  • Всего комментариев: 1

GrandZ
0
GrandZ написал: Написано 23 Июля 2014 в 13:53
Комментарий №1
МОЛОДЦА - подробно, наглядно, а главное - РАБОТАЕТ!

  • Оставить комментарий:
Добавлять комментарии могут только зарегистрированные пользователи.
Регистрация | Вход
Меню сайта
Категории
Для помощи создания сайта uCoz 25
Скрипты и модификации для Ucoz 2118
Шаблоны форумов Ucoz 28
Шаблоны сайтов Ucoz 431
Авторство Webo4ki 309
php скрипты для ucoz 57
Графика для uCoz 40
Мини-чат
Последние комментарии
  • Marishka написал:
  • Можете добавить свои input поля, но сохраняйте их порядок в html для правильного сохранения и вывода.
  • Marishka написал:
  • Новая версия 1.3 (+6 новых станций):
    Установка:
    Демо: Перейти
  • Marishka написал:
  • Доп 8 станций:
    Код
    <div class="mSt"><p>Tropical</p><div data="2/trop_64">64</div><br><div data="2/trop_128">128</div><br><div data="2/trop_320">320</div></div>  
      <div class="mSt"><p>Нафталин FM</p><div data="2/naft_64">64</div><br><div data="2/naft_128">128</div><br><div data="2/naft_320">320</div></div>  
      <div class="mSt"><p>Rave FM</p><div data="2/rave_64">64</div><br><div data="2/rave_128">128</div><br><div data="2/rave_320">320</div></div>  
      <div class="mSt"><p>Gold</p><div data="2/gold_64">64</div><br><div data="2/gold_128">128</div><br><div data="2/gold_320">320</div></div>  
      <div class="mSt"><p>GOA/PSY</p><div data="2/goa_64">64</div><br><div data="2/goa_128">128</div><br><div data="2/goa_320">320</div></div>  
      <div class="mSt"><p>Minimal/Tech</p><div data="2/mini_64">64</div><br><div data="2/mini_128">128</div><br><div data="2/mini_320">320</div></div>  
      <div class="mSt"><p>House</p><div data="2/fut_64">64</div><br><div data="2/fut_128">128</div><br><div data="2/fut_320">320</div></div>  
      <div class="mSt"><p>Megamix</p><div data="2/mix_64">64</div><br><div data="2/mix_128">128</div><br><div data="2/mix_320">320</div></div>


    Fix работы радио:
    Находим: if(radUrl=="tm" || radUrl=="ps" || radUrl=="teo" || radUrl=="dc")
    Меняем на: if (radUrl == "tm" || radUrl == "ps" || radUrl == "teo" || radUrl == "dc" || radUrl == "gop")
  • CbIPoK2513 написал:
  • Мой вариант выдаёт аватарку картинкой, а не текстом.
  • waak написал:
  • и ещё забыл добавить что использую модуль каталог сайтов
    Последние темы
    Опрос
    469
    А
    Р
    Оцените новый дизай:)
    Статистика
    Анализ интернет сайта
    0
    онлайн
    0
    наших
    0
    чужих
    Онлайн всего: 2
    Гостей: 2
    Пользователей: 0
    0
    Сегодня были
    Топ пользователей: