Для того, чтобы сделать горизонтальное выпадающее меню на чистом CSS 3, для начала нужно сделать html разметку меню такого вида:
<div class="menu">
<ul class="my_menu">
<li class="category">
<a href="/">Главная</a>
</li>
<li class="category">
<a>Категории</a>
<ul>
<li class="cat-item">
<a href="">CMS</a>
</li>
<li class="cat-item">
<a href="">PHP</a>
</li>
<li class="cat-item">
<a href="">SQL</a>
</li>
</ul>
</li>
<li class="category">
<a>Тэги</a>
<ul>
<li class="cat-item">
<a href="">Apache</a>
</li>
<li class="cat-item">
<a href="">linux</a>
</li>
<li class="cat-item">
<a href="">windows</a>
</li>
</ul>
</li>
</ul>
</div>
В результате мы получим следующее:
Это обычное вертикальное меню ul, состоящее из блочных li элементов. С помощью css давайте превратим его в горизонтальное. Для этого к li элементам с классом «category» добавим новые css свойства:
.my_menu .category {
float: left;
list-style: none;
}
Теперь элементы с классом category расположатся друг за другом и меню станет горизонтальным.
Добавим новые css свойства к подменю — сделаем его невидимым по умолчанию:
.my_menu .category > ul {
display: none;
position: absolute;
}
Делаем подменю выпадающим при наведении курсора мыши, используя css событие hover:
.my_menu .category:hover > ul {
display: block;
}
Вот и все. Теперь осталось добавить стили на свое усмотрение, чтобы меню выглядело красиво. Ниже приведу простой пример оформления горизонтального выпадающего меню:
.menu {
background-image: -webkit-linear-gradient(top,#3c3c3c 0,#222 100%);
background-image: -o-linear-gradient(top,#3c3c3c 0,#222 100%);
background-image: -webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));
background-image: linear-gradient(to bottom,#3c3c3c 0,#222 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
background-repeat: repeat-x;
border-color: #101010;
border: 1px solid;
}
.my_menu {
display: inline-block;
margin: 0px;
}
.my_menu .category {
float: left;
list-style: none;
padding: 15px 15px;
cursor: pointer;
}
.my_menu .category:hover {
background: black;
}
.my_menu .category > ul {
display: none;
position: absolute;
list-style: none;
padding-left: 0px;
border: 1px solid black;
margin-top: 15px;
margin-left: -15px;
z-index: 999;
}
.my_menu .category:hover > ul {
display: block;
}
.my_menu ul {
background: black;
}
.my_menu a {
color: white;
text-decoration: none;
}
li.cat-item {
padding: 5px 10px;
}
li.cat-item:hover {
background: white;
}
li.cat-item:hover a {
color: black;
}
Чтобы центрировать меню посередине блока div, нужно добавить следующее css свойство:
.menu {
text-align: center;
}
Статьи по теме: