Создание выпадающего меню с окном поиска при помощи CSS3 и HTML
19 мая 2014 | Опубликовано в css | 2 Комментариев »
В этом уроке мы создадим выпадающее меню в плоском стиле с окном поиска из Square UI. Меню состоит из ненумерованного списка класса .nav, содержащего разные типы элементов.
Код HTML
Типы элементов:
- · Элементы списка li, содержащие обычные ссылки, у которых нет классов или идентификаторов.
- · Элемент с идентификатором #settings, содержащий графическую ссылку.
- · Элемент с идентификатором #search, содержащий поле поиска вместе с кнопкой отправки.
- Элемент с идентификатором #options, содержащий ссылку и ненумерованный список класса .subnav, который функционирует как выпадающее меню.
В конце мы включим скрипт prefixfree, который позволит нам везде использовать свойства CSS без приставок.
<ul> <li id="settings"> <a href="#"><img src="settings.png" /></a> </li> <li> <a href="#">Application</a> </li> <li> <a href="#">Board</a> </li> <li id="search"> <form action="" method="get"> <input type="text" name="search_text" id="search_text" placeholder="Search"/> <input type="button" name="search_button" id="search_button"></a> </form> </li> <li id="options"> <a href="#">Options</a> <ul> <li><a href="#">Settings</a></li> <li><a href="#">Application</a></li> <li><a href="#">Board</a></li> <li><a href="#">Options</a></li> </ul> </li> </ul> <script src="prefixfree-1.0.7.js" type="text/javascript"></script>
CSS
1. Основные стили
@import url(http://fonts.googleapis.com/css?family=Montserrat); * { margin: 0; padding: 0; }
Мы начнем с того, что сбросим базовые настройки CSS и подключим особый шрифт «Montserrat» из Google Fonts.
2. Меню и элементы списка
.nav { background: #232323; height: 60px; display: inline-block; } .nav li { float: left; list-style-type: none; position: relative; }
У главного элемента меню темно-серый фон и фиксированная высота. Элементы списка всплывают влево и расположены относительно, так что они могут содержать выпадающее меню, у которого абсолютное позиционирование.
3. Ссылки
.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: Montserrat, sans-serif; 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; }
Ссылкам заданы базовые стили. Они используют шрифт «Montserrat», который мы подключили ранее из Google Fonts. Легкое белое свечение добавлено, чтобы сделать текст гладким и жирным. Высота ссылок — 60px, такая же, как и у элемента класса .nav.
Когда пользователь наводит указатель мыши на ссылку, ее фон меняется на более светлую версию серого фона.
Элемент с идентификатором #settings содержит графическую ссылку, так что ее размер установлен так, чтобы значок настроек появился в центре.
4. Окно поиска
#search { width: 357px; margin: 4px; } #search_text{ width: 297px; padding: 15px 0 15px 20px; font-size: 16px; font-family: Montserrat, sans-serif; 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 browsers */ 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(search.png) center no-repeat; width: 60px; float: left; padding: 0; text-align: center; height: 52px; cursor: pointer; }
У элемента с идентификатором #search фиксированная ширина и небольшой внешний отступ 4px вокруг него.
Элемент с идентификатором #search_text всплывает влево, и у него зеленый фон, который с помощью анимации меняется на светло-зеленый, когда пользователь наводит на него указатель мыши.
Элемент с идентификатором #search_button тоже всплывает влево, чтобы он выровнялся с #search_text по горизонтали. Он использует значок поиска как фон, расположенный по центру.
Применение стилей к заглушке окна поиска — это непростая задача. Заглушка может выглядеть серой в некоторых браузерах. Здесь вы можете найти полное описание, как решить эту проблему.
5. Выпадающее меню
#options a{ border-left: 0 none; } #options>a { background-image: url(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 изначально спрятан с помощью сочетания свойств CSS видимости и прозрачности. Он сдвинут на 110% от верха. Когда пользователь наводит указатель мыши, значение верхней границы меняется на 100% вместе со свойствами прозрачности и видимости, что создает красивый эффект выделения выпадающего меню.
Демонстрация работы – Скачать исходный код
Автор урока Puneet Pugalia
Перевод — Дежурка
Смотрите также:
- Создание вытягиваемого бокового меню для веб-сайта
- Создание необычного выезжающего меню с использованием jQuery
- Создаем меню с нестандартными шрифтами на CSS3 и jQuery
Комментарии
Похожие статьи
- Использование множественных фоновых изображений CSS: основы
- Создание элементов, расположенных ровно по центру, с высотой и шириной, заданными в процентах
- Использование плавной прокрутки и ее недостатки
- Использование тега span для разделения слов в ссылках в CSS
- Использование порядка расположения множественных фоновых изображений
19 мая 2014 в 18:28
Сделайте пожалуйста урок- Как сделать соц. кнопки самому? И что бы красиво было, а не шаблонно! ;)
апреля 5, 2016 at 11:31 дп
Fontawesome от Bootstrap вам в помощь