Сложность: средняя
Предполагаемое время выполнения: 45 мин.
В этом руководстве мы создадим навигацию в плоском стиле с полем поиска и раскрывающимся меню из пользовательского интерфейса Square .
HTML код
Навигация состоит из неупорядоченного списка ( .nav ), содержащего внутри себя различные типы элементов:
- Элементы списка (LI), которые содержат обычные ссылки, не имеют идентификатора / класса.
- #settings содержит ссылку на изображение.
- #search содержит поле поиска вместе с кнопкой отправки.
- #options содержит ссылку, а также неупорядоченный список ( .subnav ), который действует как раскрывающийся список.
В конце мы включаем prefixfree, что позволяет нам везде использовать только свойства CSS без префиксов .
123456789101112131415161718192021 год22232425262728<
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. Основные стили
1 2 3 4 5 6 | @import url (https://fonts.googleapis.com/css?family=Montserrat); * { margin : 0 ; padding : 0 ; } |
Начнем с базового сброса CSS и импортируем собственный шрифт Montserrat из Google Fonts .
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 ; } |
Основной элемент навигации имеет темно-серый фон и фиксированную высоту. Элементы списка смещены влево и расположены относительно друг друга, так что они могут содержать раскрывающееся меню, которое впоследствии будет абсолютно позиционировано.
3. Ссылки
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 : 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. Добавляется легкое белое свечение, чтобы сделать текст гладким и жирным. Ссылки имеют высоту строки 60 пикселей, что соответствует высоте строки .nav .
Ссылки также имеют эффект наведения, когда фон меняется на более светлый вариант серого фона.
#settings содержит ссылку на изображение, поэтому его макет изменен таким образом, чтобы значок настроек отображался в центре.
4. Поле поиска
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 : 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.15 s; } ::-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 имеет фиксированную ширину и небольшой отступ или 4 пикселя вокруг него.
#search_text перемещается влево и имеет зеленый фон, который при наведении курсора становится более светлым.
#search_button также перемещается влево, чтобы выровнять его с #search_text по горизонтали. Он использует значок поиска в качестве фона, который располагается в центре.
Стилизация заполнителя – непростая задача. В некоторых браузерах он отображается серым. Здесь вы можете найти полное описание, как решить эту проблему.
5. Раскрывающийся список
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 (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.1 s; 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. Он расположен на уровне 110% от вершины. При наведении указателя верхняя часть изменяется на 100% вместе со свойствами непрозрачности и видимости, создавая крутой эффект наведения в раскрывающемся меню.
Узнать больше интересного: