3D кнопки на CSS

В данном уроке мы создадим 3D кнопки с применение только CSS команд.

Разметка HTML

Для навигационной панели используем неупорядоченный список с тегом <nav>:

<nav>
	<ul class="nav">
		<li><a href="#" class="icon-home"></a></li>
		<li><a href="#" class="icon-cog"></a></li>
		<li><a href="#" class="icon-cw"></a></li>
		<li><a href="#" class="icon-location"></a></li>
	</ul>
</nav>

 

CSS для создания иконок

Для создания иконок будем использовать специальный шрифт:

@font-face {
  font-family: 'fontello';
  src: url('../fonts/fontello.eot');
  src: url('../fonts/fontello.eot?#iefix') format('embedded-opentype'),
       url('../fonts/fontello.woff') format('woff'),
       url('../fonts/fontello.ttf') format('truetype'),
       url('../fonts/fontello.svg#fontello') format('svg');
  font-weight: normal; font-style: normal;
}

[class*="icon-"] {
  font-family: 'fontello';
  font-style: normal;
  font-size: 3em;
  speak: none;
}

.icon-home:after { content: "\2302"; } 
.icon-cog:after { content: "\2699"; } 
.icon-cw:after { content: "\27f3"; } 
.icon-location:after { content: "\e724"; } 

 

CSS для кнопок

Кнопки выравниваются горизонтально с помощью свойства inline-block для пунктов списка. Мы сдвигаем их плотно с помощью отрицательного значения для поля.

.nav {
  list-style: none;
  text-align: center;
}

.nav li {
  position: relative;
  display: inline-block;
  margin-right: -4px;
}

Объемность для кнопок получается с помощью небольшого градиента и формирования выступа парой  свойств box-shadows (одного для обычной тени и другого - для внутренней). Ширина и высота кнопок одинаковая для создания квадрата, который превращается в круг с помощью свойства border-radius. Значение свойства line-height равно высоте, а text-align установлено на выравнивание по центру, поэтому иконки центрированы горизонтально и вертикально.

.nav a {
  display: block;
  background-color: #f7f7f7;
  background-image: -webkit-gradient(linear, left top, left bottom, from(#f7f7f7), to(#e7e7e7));
  background-image: -webkit-linear-gradient(top, #f7f7f7, #e7e7e7); 
  background-image: -moz-linear-gradient(top, #f7f7f7, #e7e7e7); 
  background-image: -ms-linear-gradient(top, #f7f7f7, #e7e7e7); 
  background-image: -o-linear-gradient(top, #f7f7f7, #e7e7e7); 
  color: #a7a7a7;
  margin: 36px;
  width: 144px;
  height: 144px;
  position: relative;
  text-align: center;
  line-height: 144px;
  border-radius: 50%;
  box-shadow: 0px 3px 8px #aaa, inset 0px 2px 3px #fff;
}

Можно придать кнопке плоский вид для состояния :hover, чтобы  имитировать нажатие.

.nav a:hover {
  text-decoration: none;
  color: #555;
  background: #f5f5f5;
}

Теперь наши кнопки будут выглядеть так:

Отлично, но нужно двигаться дальше.

Теперь воспользуемся псевдо-элементами для формирования дополнительных эффектов. Для формирования горизонтальной выгравированной линии задействуем псевдо-селектор :before для пунктов списка. С помощью свойства z-index можно поместить его ниже всех остальных элементов. Двойная рамка создает линии отличный вдавленный вид. А отрицательное значение полей (установленное ранее для пунктов списка) позволяет сделать линию сплошной. Также воспользуемся преимуществом абсолютного позиционирования для центрирования линии.

.nav li:before {
  content: "";
  display: block;
  border-top: 1px solid #ddd;
  border-bottom: 1px solid #fff;
  width: 100%;
  height: 1px;
  position: absolute;
  top: 50%;
  z-index: -1;
}

Для придания дополнительного объема создадим обводку вокруг каждой кнопки. Также воспользуемся псевдо-элементом.

.nav a:before {
  content: "";
  display: block;
  background: #fff;
  border-top: 2px solid #ddd;
  position: absolute;
  top: -18px;
  left: -18px;
  bottom: -18px;
  right: -18px;
  z-index: -1;
  border-radius: 50%;
  box-shadow: inset 0px 8px 48px #ddd;
}

Размер обводки (немного больше самой кнопки) получается с помощью абсолютного позиционирования псевдо-элемента позади кнопки и растягивания его с помощью отрицательных значений положения (top/bottom/left/right). 3D вид получается с помощью свойства border и внутренней тени box-shadow.

 

Поддержка в браузерах

Данные кнопки используют CSS3 и несколько псевдо-элементов из CSS 2.1. Последние версии браузеров Safari, Chrome, Opera, или Firefox выводят их без искажений. IE 8 не поддерживает CSS3, и внешний вид несколько изменяется:

Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/uOHfFEKfMPI/lessons.php

Читать комменты и комментировать

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



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

3D кнопки на CSS | | 2012-06-19 11:57:31 | | Статьи Web-мастеру | | В данном уроке мы создадим 3D кнопки с применение только CSS команд.Разметка HTMLДля навигационной панели используем неупорядоченный список с тегом :  CSS для создания иконокДля создания иконок будем | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: