Фиксированное горизонтальное меню

Сделаем горизонтальное меню на CSS3, используя градиенты и переходы. Плюс зафиксируем его вверху страницы. При скроллинге менюшка будет скользить вместе с нами - всегда будет у нас перед глазами.

Разметка HTML

        <div id="menu_div">
            <div id="navigation">
                <div id="menu">
                    <ul id="nav">
                        <li><a href="#">Главная</a>
                            <ul>
                                <li><a href="#">Пункт 1</a></li>
                                <li><a href="#">Пункт 2</a></li>
                                <li><a href="#">Пункт 3</a></li>
                                <li><a href="#">Пункт 4</a></li>
                                <li><a href="#">Пункт 5</a></li>
                                <li><a href="#">Пункт 6</a>
                                    <ul>
                                        <li><a href="#">Пункт 1</a></li>
                                        <li><a href="#">Пункт 2</a></li>
                                        <li><a href="#">Пункт 3</a>
                                            <ul>
                                                <li><a href="#">Пункт 1</a></li>
                                                <li><a href="#">Пункт 2</a></li>
                                                <li><a href="#">Пункт 3</a>
                                                    <ul>
                                                        <li><a href="#">Пункт 1</a></li>
                                                        <li><a href="#">Пункт 2</a></li>
                                                        <li><a href="#">Пункт 3</a></li>                       
                                                    </ul>
                                                </li>    <!-- Уровень 4 КОНЕЦ -->                   
                                            </ul>
                                        </li>    <!-- Уровень 3 КОНЕЦ -->                   
                                    </ul>
                                </li>    <!-- Уровень 2 КОНЕЦ -->                   
                            </ul>
                        </li> <!-- Уровень 1 КОНЕЦ -->
                       
                        <li><a href="#">Портфолио</a>
                            <ul>
                                <li><a href="#">Сайты</a></li>
                                <li><a href="#">Скрипты</a></li>
                                <li><a href="#">Дизайн</a></li>
                                <li><a href="#">СЕО</a></li>
                                <li><a href="#">CMS</a>>
                                </li>                       
                            </ul>
                        </li>
                       
                        <li><a href="#">Блог</a>
                            <ul>
                                <li><a href="#">Пункт 1</a></li>
                                <li><a href="#">Пункт 2</a></li>
                                <li><a href="#">Пункт 3</a></li>
                                <li><a href="#">Пункт 4</a></li>
                            </ul>
                        </li>
                       
                        <li><a href="#">Услуги</a></li>
                        <li><a href="#">О нас</a></li>
                        <li><a href="#">Контакты</a></li>
                    </ul>
                   
                    <!-- Поисковая форма -->
                    <form class="searchform" action="#">
                        <input class="searchfield" type="text" value="Поиск..." onfocus="if (this.value == 'Поиск...') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Поиск...';}" />
                    </form>
                    <!-- / Поисковая форма -->
                    
                </div><!-- #menu КОНЕЦ-->
            </div><!-- #navigation КОНЕЦ-->
        </div><!-- #menu_div КОНЕЦ-->

CSS

Используется два файла со стилями:

  • reset.css - для сброса стилей, так как различные браузеры по умолчанию по разному интерпретируют поведение элементов html.
  • style.css - сам стиль нашего меню, его код приведен ниже.

/* Цветовая схема */
/* Menu bar background color */
#navigation,
#nav li ul li,
#nav li ul li a{
background: #000;
}

/* Menu Item text color */
#nav li a,
#nav li a:hover,
#nav li ul li,
#nav li ul li a,
#nav li ul li a:hover  {
color: #fff;
}

/* Menu Item background color on hover */
#nav li a:hover,
#nav li ul li a:hover  {
background: #9370DB;
}

/* Text Shadow */
#nav li a,
#nav li a:hover,
#nav li ul li a:hover  {
text-shadow: 0 1px 1px #333;
}

/* Search form colors */
.searchform input, .searchform input:not(:focus){
color:#B1B1B1; /*search form text color default*/
background: #fff; /*search form background color default*/
}
.searchfield:focus{
color: #000; /* search form text color after click */
}

/* /КОНЕЦ Цветовой схемы */

#menu_div{
clear: both;
position: relative;
top: 0;
left: 0;
} /* Free space to top specialy for menu */

#navigation {
position: fixed;
}

#navigation, #menu_div {
width: 100%;
margin: 0 !important;
padding: 0 !important;
}

#menu_div, #navigation, #menu, #nav{
height: 45px; /* menu height */
}

#menu_div:hover,
#navigation:hover,
#nav li a:hover, #nav li ul a
{
opacity: 0.95;/* Menu transparency on mouse hover*/
}

#menu_div,
#navigation,
#nav li a,
#menu_div:not(:hover),
#navigation:not(:hover)
{
opacity: 0.8;/* Menu transparency on mouse out */
}

#menu {
width: 960px;
margin:0 auto; /*center the menu*/
padding:0;
position: relative;
}

#nav{
width: 960px;
margin:0;
padding:0;
position: relative;
font-family: 'Arial', Helvetica, sans-serif;
}

#nav li a,#nav li {
float:left;
}

#nav li {
list-style:none;
position:relative;
}

#nav li a {
line-height: 45px;
padding:0 15px;
text-decoration:none;
margin:0;
font-size:12px;
font-weight:700;
text-transform:uppercase;
}

/*====================
    Подменю
=====================*/
#nav li ul {
display:none;
position:absolute;
left:0;
top:100%;
padding:0;
margin:0;
} /* стереть подменю */

#nav li:hover > ul {
display:block;
} /* show submenu on hover */

#nav li ul li,#nav li ul li a {
float:none;
height: 35px; /* submenu item height */
min-width: 150px; /* submenu item minimal width */
line-height: 35px;
border-right: 0;
text-shadow: none;
display:block;
font-size:13px;
font-weight:400;
text-transform:inherit;
} /* Submenu item */

#nav li ul li {
_display:inline; /* for IE */
}

/* == 12. Sub-Sub Menu == */
#nav li ul li ul {
display:none;
}

#nav li ul li:hover ul {
left:100%;
top:0;
}

/*====================
    Поисковая форма
====================*/

.searchform {
position: absolute;
right: 15px;
top: 6px;
display: inline-block;
zoom: 1;
*display: inline;
border: 0;
padding: 0;
}
.searchform input {
font: normal 12px/100% Arial, Helvetica, sans-serif;
}
.searchform .searchfield {
height: 27px;
line-height: 27px;
padding-left: 10px;
padding-right: 10px;
width: 150px;
border: 2px solid #333;
outline: none;
-webkit-border-radius: 2em;
-moz-border-radius: 2em;
border-radius: 2em;
-moz-box-shadow: inset 1px 1px 2px #A1A1A1;
-webkit-box-shadow: inset 1px 1px 2px #A1A1A1;
box-shadow: inner 1px 1px 2px #A1A1A1;
}

.searchfield:focus{
font-weight: 700;
width: 220px;
}

.searchfield:not(:focus){
width: 150px;
}


/*========================
        Переходы
========================*/

#nav li a:hover,
#nav li ul li a:hover  {
-webkit-transition-property:color, background;
-webkit-transition-duration: 0.5s, 0.5s;
-webkit-transition-timing-function: linear, ease-out;
}

.searchfield:focus,
.searchfield:not(:focus){
-webkit-transition-property:width;
-webkit-transition-duration: 0.5s, 0.5s;
-webkit-transition-timing-function: linear, ease-out;
}

#menu_div:hover,
#navigation:hover,
#nav li ul a,
#menu_div,
#navigation,
#nav li a,
#menu_div:not(:hover),
#navigation:not(:hover)
{
-webkit-transition-property:opacity;
-webkit-transition-duration: 0.5s, 0.5s; /* duration in seconds */
-webkit-transition-timing-function: linear, ease-out;
} /* Анимация прозрачности */

СКАЧАТЬСкачек: 3580
4,69 Kb
Кто скачал?

ДЕМОПосмотреть
пример