Лого SiteHere.ru

Выпадающее горизонтальное меню с поиском на CSS3 и HTML5

Выпадающее горизонтальное меню с поиском на CSS3 и HTML5

В данной статье мы создадим выпадающее горизонтальное меню с полем для поиска с помощью CSS3 и HTML5.

Пример данного меню можно увидеть здесь:

Посмотреть примерСкачать



HTML часть

Навигации состоит из маркированного списка (с классом .nav), который содержит внутри:

  • Элементы списка, которые содержат обычные ссылки и не имеют никакого идентификатора или класса;
  • #settings внутри которого изображения как ссылки;
  • #search содержит поле для поиска и кнопку отправки текста;
  • #options содержит ссылку и список( с классом .subnav), который работает как выпадающее меню.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<ul class="nav">
    <li id="settings">
        <a href="#"><img src="images/settings.png"></a>
    </li>
    <li>
        <a href="#">Приложения</a>
    </li>
    <li>
        <a href="#">Сервис</a>
    </li>
    <li id="search">
        <form action="" method="get">
            <input name="search_text" id="search_text" placeholder="Поиск..." type="text">
            <input name="search_button" id="search_button" type="button">
        </form>
    </li>
    <li id="options">
        <a href="#">Меню</a>
        <ul class="subnav">
            <li><a href="#">Настройки</a></li>
            <li><a href="#">Приложения</a></li>
            <li><a href="#">Сервис</a></li>
            <li><a href="#">Разное</a></li>
        </ul>
    </li>
</ul>

CSS часть

Базовые стили:

1
2
3
4
* {
    margin: 0; 
    padding: 0;
}

Навигация и вид списка

1
2
3
4
5
6
7
8
9
10
11
.nav {
    background: #232323;
    height: 60px;
    display: inline-block;
}
 
.nav li {
    float: left;
    list-style-type: none;
    position: relative;
}

Здесь задали фон для меню, а также расположили горизонтально элементы списка.


Ссылки в меню

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
.nav li a {
    font-size: 16px; 
    color: white;
    display: block;
    line-height: 60px;
    padding: 0 26px;
    text-decoration: none;
    border-left: 1px solid #2e2e2e;
    font-family: sans-serif, Arial;
    text-shadow: 0 0 1px rgba(255, 255, 255, 0.5);
}
.nav li a:hover {
    background-color: #2e2e2e;
}
 
#settings a {
    padding: 18px;
    height: 24px;
    font-size: 10px;
    line-height: 24px;
}

Ссылки имеют высоту блока, то есть весь блок будет ссылкой. При наведении на ссылку фон меняется на серый. Блок с идентификатором #settings содержит изображение, поэтому для него задали такие свойства.


Поле поиска

Поиск
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#search {
    width: 357px;
    margin: 4px;
}
#search_text {
    width: 297px;
    padding: 15px 0 15px 20px;
    font-size: 16px;
    font-family: sans-serif, Arial;
    border: 0 none;
    height: 52px;
    margin-right: 0;
    color: white;
    outline: none;
    background: #1f7f5c;
    float: left;
    box-sizing: border-box;
    transition: all 0.15s;
}
::-webkit-input-placeholder { /* WebKit браузеры */
    color: white;
}
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
    color: white;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
    color: white;
}
:-ms-input-placeholder { /* Internet Explorer 10+ */
    color: white;
}
#search_text:focus {
    background: rgb(64, 151, 119);
}
#search_button {
    border: 0 none;
    background: #1f7f5c url("../images/search.png") center no-repeat;
    width: 60px;
    float: left;
    padding: 0;
    text-align: center;
    height: 52px;
    cursor: pointer;
}

Здесь идет оформление поля с поиском. Заданы разные свойства, при наведении, при фокусе и т.д.


Выпадающая часть

Выпадающая часть
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#options a {
    border-left: 0 none;
}
#options>a {
    background-image: url("../images/triangle.png");
    background-position: 85% center;
    background-repeat: no-repeat;
    padding-right: 42px;
}
.subnav {
    visibility: hidden;
    position: absolute;
    top: 110%;
    right: 0;
    width: 200px;
    height: auto;
    opacity: 0;
    transition: all 0.1s;
    background: #232323;
}
.subnav li {
    float: none;
}
.subnav li a {
    border-bottom: 1px solid #2e2e2e;
}
#options:hover .subnav {
    visibility: visible;
    top: 100%;
    opacity: 1;
}

Блок с классом .subnav изначально спрятан, и появляется он только при наведении.



Если есть какие-то вопросы, задавайте их в комментариях ниже.

Успехов!

8 комментариев к записи
  • Вячеслав

    Симпатичное меню….а как на него реагируют современные браузеры? испытания были именно сним?

     
    • Юрий

      К сожалению старые браузеры не совсем правильно показывают данное меню. Проблема в основном в изображении, которое находится на фоне поля поиска.

       
  • liudmila

    к сожалению выпадающее окно не задерживается, выходит и быстро уходит. Не возможно кликнуть на окно, что бы перейти на страничку. мне кажется , что что то не дописано в css.что думаете?

     
    • Юрий

      Людмила, я думаю что вы убираете курсор с кнопки «Меню». Для того чтобы попасть на список, который появляется — необходимо вести курсор мыши вниз и нельзя убирать его в это время влево или вправо, иначе список сразу исчезнет. Здесь ведь реализован обычный выпадающий список.

       
  • liudmila

    Да , я так и делаю, но окно быстро исчезает.я не успеваю кликнуть. Стоит курсор немного сдвинуть вниз и окно исчезает. не могу поймать его. на примере у вас окно нормально работает. Я не могу скачивать ваши примеры , мой комп. не качает почему-то с русских сайтов.Вот я и подумала , что я не все дописала .

     
    • Юрий

      Людмила, отправил вам архив с примером на e-mail.

       
  • Антон

    Спасибо за статья. А можно получить архив с примером на e-mail?

     
    • Юрий

      Здравствуйте, Антон!
      В самом начале есть кнопка «Скачать».

       

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *