Создание выпадающего меню с поиском на CSS3 и HTML

В этом учебном руководстве мы создадим выпадающее CSS меню с поиском, в стиле Flat.

Сложность

HTML разметка

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

  • Контейнер Элементы списка (li), которые содержат обычные ссылки без идентификаторов
  • Контейнер #settings, содержит иконку
  • Контейнер #search, содержит поле поиска вместе с иконкой
  • Контейнер #options, содержит ссылку, а также неупорядоченный список (.subnav), который мы сделаем выпадающим

В конце мы подключим prefixfree, который позволяет нам использовать CSS свойства без префиксов.

<ul class="nav">
    <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 class="subnav">
            <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.

При наведении курсора на ссылку, меняем фон на более светлый.

Контейнер #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, зададим фиксированную ширину и небольшие отступы.

Поле #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;
}

Для элемента #options, который содержит выпадающий список, установим иконку треугольника в качестве фона.

Элемент .subnav по умолчанию скрыт, с помощью CSS свойств visibility и opacity. По умолчанию переместим его на 110% от верхнего края. При наведении меняем это значение на 100% вместе с opacity и visibility.

ДЕМО СКАЧАТЬ

 

Перевод статьи Create a Drop Down Menu with Search Box in CSS3 and HTML

Тэги: menusearch

Вход

Уважаемый пользователь! Мы обнаружили, что вы используете AdBlock и вынуждены скрыть часть материалов на нашем сайте. Siteacademy существует и развивается за счет доходов от рекламы. Просим внести наш сайт в список исключений или отключить Блокировщик рекламы на нашем сайте.