Новые уроки
Получай новые уроки по RSS

Подписка на рассылку


Голосование
Чего выкладывать больше?
Программ
Уроков
Скриптов
Шаблонов
Макетов
CMS
Видеоуроков
Облако тегов

CSS → Выпадающее меню на чистом css и никаких js

В переоборудовании одного сайта заказчика мы стали больше осознавать, что там было много контента, который необходимо поместить в навигации чтобы посетитель мог очень просто и довольно быстро найти нужную страницу. Поэтому навигация должна быть динамичной. Мы перебрали много вариантов меню и остановились на простом выпадающем меню сделанном средствами css. Меню так же имеет функцию прозрачности.

Демо: смотреть
Скачать: menyu.rar [41,18 Kb] (cкачиваний: 335)


Выпадающее меню на чистом css и никаких js


Разметка

Много выпадающих меню полагаться на громоздкий код, посторонней разметки и javascript на работу, наше меню работает только на HTML из простых 19 строк и CSS, с некоторыми прекрасными прогрессивными функциями CSS3.

<ul id="nav">
    <li>
        <a href="#">Home</a>
    </li>

    <li>
        <a href="#">About</a>
        <ul>
            <li><a href="#">The product</a></li>

            <li><a href="#">Meet the team</a></li>
        </ul>
    </li>
    <li>
        <a href="#">Services</a>

        <ul>
            <li><a href="#">Sevice one</a></li>
            <li><a href="#">Sevice two</a></li>

            <li><a href="#">Sevice three</a></li>
            <li><a href="#">Sevice four</a></li>
        </ul>

    </li>
    <li>
        <a href="#">Product</a>
        <ul>
            <li><a href="#">Small product (one)</a></li>

            <li><a href="#">Small product (two)</a></li>
            <li><a href="#">Small product (three)</a></li>
            <li><a href="#">Small product (four)</a></li>

            <li><a href="#">Big product (five)</a></li>
            <li><a href="#">Big product (six)</a></li>
            <li><a href="#">Big product (seven)</a></li>

            <li><a href="#">Big product (eight)</a></li>
            <li><a href="#">Enourmous product (nine)</a></li>
            <li><a href="#">Enourmous product (ten)</a></li>

            <li><a href="#">Enourmous product (eleven)</a></li>
        </ul>
    </li>
    <li>
        <a href="#">Contact</a>

        <ul>
            <li><a href="#">Out-of-hours</a></li>
            <li><a href="#">Directions</a></li>

        </ul>
    </li>
</ul>


CSS
Добавим красоты нашему меню и собственно функцию выпадения.
Сначало добавим обнуляющий стиль для всех бразуеров.
/*------------------------------------*\
    RESET
\*------------------------------------*/
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{
    margin:0;
    padding:0;
}
table{
    border-collapse:collapse;
    border-spacing:0;
}
fieldset,img{
    border:0;
}
address,caption,cite,code,dfn,th,var{
    font-style:normal;
    font-weight:normal;
}
caption,th{
    text-align:left;
}
h1,h2,h3,h4,h5,h6{
    font-size:100%;
    font-weight:normal;
}
q:before,q:after{
    content:'';
}
abbr,acronym{
    border:0;
}


Далее добавим общий стиль для страницы, фон и шрифт.
html{
    height:101%;
    background:#fff url(/img/css/bg.gif) top left repeat-x;
}
body{
    font-family:Arial,Verdana,sans-serif;
    font-size:0.75em;
    color:#333;
    width:960px;
    margin:0 auto;
    padding:10px;
}


Теперь самое главное, посмотрите внимательно на код для меню и постарайтесь в нем разобраться.
#nav{
    float:left;
    width:100%;
    list-style:none;
    font-weight:bold;
    margin-bottom:10px;
}
#nav li{
    float:left;
    margin-right:10px;
    position:relative;
    display:block;
}
#nav li a{
    display:block;
    padding:5px;
    color:#fff;
    background:#333;
    text-decoration:none;
    
    text-shadow:1px 1px 1px rgba(0,0,0,0.75); /* Text shadow to lift it a little */
    -moz-border-radius:2px;
    -webkit-border-radius:2px;
    border-radius:2px;
}
#nav li a:hover{
    color:#fff;
    background:#6b0c36;
    background:rgba(107,12,54,0.75); /* It'll look nice semi-transparent */
    text-decoration:underline;
}

/*--- DROPDOWN ---*/
#nav ul{
    list-style:none;
    position:absolute;
    left:-9999px; /* Hide off-screen when not needed (this is more accessible than display:none;) */
    opacity:0; /* Set initial state to transparent */
    -webkit-transition:0.25s linear opacity; /* Make the dropdown fade-in in Webkit */
}
#nav ul li{
    padding-top:1px; /* Introducing a padding between the li and the a give the illusion spaced items */
    float:none;
}
#nav ul a{
    white-space:nowrap; /* Stop text wrapping and creating multi-line dropdown items */
    display:block;
}
#nav li:hover ul{ /* Display the dropdown on hover */
    left:0; /* Bring back on-screen when needed */
    opacity:1; /* Fade to opaque */
}
#nav li:hover a{ /* Set styles for top level when dropdown is hovered */
    background:#6b0c36;
    background:rgba(107,12,54,0.75); /* It'll look nice semi-transparent */
    text-decoration:underline;
}
#nav li:hover ul a{ /* Override some top level styles when dropdown is hovered */
    text-decoration:none;
    -webkit-transition:-webkit-transform 0.075s linear;
}
#nav li:hover ul li a:hover{ /* Set styles for dropdown when items are hovered */
    background:#333;
    background:rgba(51,51,51,0.75); /* It'll look nice semi-transparent */
    text-decoration:underline;
    -moz-transform:scale(1.05);
    -webkit-transform:scale(1.05);
}


Наше выпадающее меню на чистом css и html готово!
Опубликовал dimas_ua, 20-05-2011, 00:00 Комментариев: 2
 (голосов: 7)
Пишет Владимир, 24 мая 2011 10:20
  • Сообщений: 0
  • Новостей: 0
Погодите ка, что значит: "с некоторыми прекрасными прогрессивными функциями CSS3"? Т.е. во всех браузерах IE ваше прекрасное выпадающее меню работать не будет или как?
Пишет CyberKatze, 26 мая 2011 22:09
  • Сообщений: 0
  • Новостей: 0
Цитата: Владимир
Владимир


Если бы Вы внимательно просмотрели CSS код, то было бы сразу понятно, на какие браузеры расчитывался пример! )))

да и к тому же CSS3 ИЕ ниже 9 версии особо нормально никогда не понимал и не будет понимать.. поэтому придется как то исхитряться и приводить в норму в соответствии стандарта CSS3...

да и в прочем если прочитать комментарии к оригиналу... то:

DuMaurier said on 18 February, 2011 at 2:32 pm

I created something similar but added some CSS3 to animate the drop down. Let me know what you think. Obviously, the animation only works in WebKit, Firefox 4 and Opera.[u][/u]