Яндекс.Метрика

Дизайн-журнал №1. Актуальная информация для дизайнеров, веб дизайнеров, программистов и разработчиков сайтов.

Создание выпадающего меню с окном поиска при помощи 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

Перевод — Дежурка

Смотрите также:




Комментарии

  1. Кирилл
    Thumb up Thumb down 0

    Сделайте пожалуйста урок- Как сделать соц. кнопки самому? И что бы красиво было, а не шаблонно! ;)

    Максим Ответ:

    Thumb up Thumb down 0

    Fontawesome от Bootstrap вам в помощь