Октябрь 25, 2019 Запись была обновлена
Выпадающее горизонтальное меню с поиском на 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 изначально спрятан, и появляется он только при наведении.
Если есть какие-то вопросы, задавайте их в комментариях ниже.
Успехов!
Спасибо за ваше обращение!
Мы свяжемся с вами в течение 2-х часов (график работы: пн-пт, с 10 до 19)
Симпатичное меню….а как на него реагируют современные браузеры? испытания были именно сним?
К сожалению старые браузеры не совсем правильно показывают данное меню. Проблема в основном в изображении, которое находится на фоне поля поиска.
к сожалению выпадающее окно не задерживается, выходит и быстро уходит. Не возможно кликнуть на окно, что бы перейти на страничку. мне кажется , что что то не дописано в css.что думаете?
Людмила, я думаю что вы убираете курсор с кнопки «Меню». Для того чтобы попасть на список, который появляется — необходимо вести курсор мыши вниз и нельзя убирать его в это время влево или вправо, иначе список сразу исчезнет. Здесь ведь реализован обычный выпадающий список.
Да , я так и делаю, но окно быстро исчезает.я не успеваю кликнуть. Стоит курсор немного сдвинуть вниз и окно исчезает. не могу поймать его. на примере у вас окно нормально работает. Я не могу скачивать ваши примеры , мой комп. не качает почему-то с русских сайтов.Вот я и подумала , что я не все дописала .
Людмила, отправил вам архив с примером на e-mail.
Спасибо за статья. А можно получить архив с примером на e-mail?
Здравствуйте, Антон!
В самом начале есть кнопка «Скачать».