CSS3 Анимированные кнопки
Чтобы превратить обычную
ссылку на своей странице в анимированную
кнопку CSS3, нужно просто
присвоить кнопке класс button и один из поддерживаемых цветов. Ниже приведено
несколько примеров:
ДЕМО СКАЧАТЬ
HTML
<a href="#"
class="button blue big">Download</a>
<a href="#"
class="button blue medium">Submit</a>
<a href="#"
class="button small blue rounded">Submit</a>
|
Есть четыре класса имеющий цвет - синий, зеленый, оранжевый и
серый. Остальные классы, которые вы видите выше, не являются обязательными. Вы
можете выбрать размер маленький, средний и большой, и еще один класс - закругленный,
что создает более округлый вид кнопки. Теперь
давайте внимательнее посмотрим на класс CSS, который делает это возможным.
CSS3 анимированными кнопками
CSS
Весь код CSS для анимированных кнопок находится в buttons.css .
Обратите внимание, что на протяжении кода, я определил две версии одного и того же
содержания в ряде мест. Это связано
с тем, как браузеры обращаются с определениями CSS. Они определяют правила, которые им
нужны и применяют их, не обращая внимания
на те, которые они не понимают. Таким образом, мы можем иметь простую
версию правил, что понятно всем.
Кнопки / buttons.css
.button{
font:15px Calibri, Arial, sans-serif;
/* A semi-transparent text shadow */
text-shadow:1px 1px 0 rgba(255,255,255,0.4);
/* Overriding the default underline styling of the links */
text-decoration:none !important;
white-space:nowrap;
display:inline-block;
vertical-align:baseline;
position:relative;
cursor:pointer;
padding:10px 20px;
background-repeat:no-repeat;
/* The following two rules are fallbacks, in case
the browser does not support multiple backgrounds. */
background-position:bottom left;
background-image:url('button_bg.png');
/* CSS3 background positioning property with multiple values. The
background
images themselves are defined in the individual color classes */
background-position:bottom left, top right, 0 0, 0 0;
background-clip:border-box;
/* Applying a default border radius of 8px */
-moz-border-radius:8px;
-webkit-border-radius:8px;
border-radius:8px;
/* A 1px highlight inside of the button */
-moz-box-shadow:0 0 1px #fff inset;
-webkit-box-shadow:0 0 1px #fff inset;
box-shadow:0 0 1px #fff inset;
/* Animating the background positions with CSS3 */
/* Currently works only in Safari/Chrome */
-webkit-transition:background-position 1s;
-moz-transition:background-position 1s;
-o-transition:background-position 1s;
transition:background-position 1s;
}
.button:hover{
/* The first rule is a fallback, in case the browser
does not support multiple backgrounds
*/
background-position:top left;
background-position:top left, bottom right,
0 0, 0 0;
}
|
Первое, что мы должны сделать, это определить класс
кнопки. Это основное у кнопок, поскольку это относится к позиционированию,
шрифтам и стилям фона.
Во-первых, это стили шрифтов, после чего следует свойство
дисплея. Он расположен в встроенный блок, что позволяет ему,
находится на той же строке, окружающего его текста (как элемент), но и вести
себя как блок в отношении отступов и полей.
Как вы увидите чуть позже, каждая кнопка имеет четыре
фоновых изображения, применяемые к ним. Хотя
это звучит устрашающе, только один файл на самом деле запрашивается с
сервера. Первые два фона нижний левый и верхний правый часть изображения
пузырьков, которые вы можете видеть на рисунке ниже, а два других являются
чисто CSS градиенты.
Как я уже упоминал выше, пузырьки фона
отображаются в виде двух отдельных изображений, смещенных со свойством
фон-позиции.
Теперь необходимо сказать
несколько слов о размерах и закругленных классах.
/* The three buttons sizes */
.button.big { font-size:30px;}
.button.medium { font-size:18px;}
.button.small { font-size:13px;}
/* A more rounded button */
.button.rounded{
-moz-border-radius:4em;
-webkit-border-radius:4em;
border-radius:4em;
}
|
Вот три класса размеров - маленькие, средние и большие, и
округлые классы. Кнопки масштабирования в соответствии с их размером текста. Таким образом, никакой явной
ширины и высоты не должно быть указано.
Теперь давайте перейдем к интересной части - цвет.
Определим только синюю кнопку, а остальные почти идентичны.
/* BlueButton */
.blue.button{
color:#0f4b6d !important;
border:1px solid #84acc3 !important;
/* A fallback background color */
background-color: #48b5f2;
/* Specifying a version with gradients according to */
background-image:
url('button_bg.png'), url('button_bg.png'),
-moz-radial-gradient( center
bottom, circle,
rgba(89,208,244,1) 0,rgba(89,208,244,0) 100px),
-moz-linear-gradient(#4fbbf7, #3faeeb);
background-image:
url('button_bg.png'), url('button_bg.png'),
-webkit-gradient( radial, 50%
100%, 0, 50% 100%, 100,
from(rgba(89,208,244,1)),
to(rgba(89,208,244,0))),
-webkit-gradient(linear, 0% 0%, 0% 100%, from(#4fbbf7), to(#3faeeb));
}
.blue.button:hover{
background-color:#63c7fe;
background-image: url('button_bg.png'),
url('button_bg.png'),
-moz-radial-gradient( center
bottom, circle,
rgba(109,217,250,1) 0,rgba(109,217,250,0) 100px),
-moz-linear-gradient(#63c7fe, #58bef7);
background-image:
url('button_bg.png'), url('button_bg.png'),
-webkit-gradient( radial, 50%
100%, 0, 50% 100%, 100,
from(rgba(109,217,250,1)), to(rgba(109,217,250,0))),
-webkit-gradient(linear, 0% 0%, 0% 100%, from(#63c7fe), to(#58bef7));
}
|
В приведенном выше фрагменте, можно увидеть, что мы
определяем линейный градиент и радиальный один поверх другого. Чтобы
градиенты смешать более плавно, как в WebKit и Mozilla синтаксиса мы определяем
радиальный градиент с RGBA, что делает внешний цвет градиента полностью
прозрачным.
ДЕМО
СКАЧАТЬ
|