Исходник:
demo_1470.zip
Разметка 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, и внешний вид несколько изменяется:
