Как настроить Foundation 4 Top Bar
() translation by (you can also view the original English article)
Zurb's Foundation 4 имеет блестящую верхнюю панель, которая стала почти символом построения сайта Foundation. Сегодня мы рассмотрим, как вы можете реализовать его по-другому, разместив его в другом месте на странице, предоставив вам настраиваемое и адаптивное горизонтальное меню навигации.
Начиная
Для начала нам понадобится последняя версия фонда. Разархивируйте и поместите все файлы в вашу рабочую или тестовую директорию. Мы будем использовать только index.html, создав собственный стиль style.css, в котором мы переопределим различные классы верхней панели, чтобы сделать нашу собственную навигацию.



Также загрузите фоновое изображение, представленное выше. Мы будем использовать это для меню, поэтому поместите его в папку «img». Есть все? Тогда запустите ваш любимый редактор и начнем!
Настройка структуры HTML
Шаг 1: Общая разметка
Индексный файл в вашей загрузке поставляется с некоторым предустановленным HTML. Вы можете оставить все, как найдете в теге заголовка, и можете оставить ссылки скрипта (перед закрывающим тегом тела) там, где они находятся. Нам нужно все это, чтобы сетка и верхняя панель действительно работали.
Вы можете очистить остальную часть пустышки. Мы собираемся сделать дизайн полной ширины, ничего сложного, просто чтобы лучше понять, с чем мы работаем.
Хорошо, давайте настроим верхний колонтитул, навигацию, область контента и нижнего колонтитула и добавим некоторый фиктивный контент для наполнения. Мы дадим каждой области класс "полной ширины", затем в каждой области мы разместим div с class = "row", div с class = "large-12" и class = "columns". Это устанавливает базовую структуру сетки.
Примечание: для получения дополнительной информации о том, как работает сетка, взгляните на Foundation for Beginners: Grid System
1 |
|
2 |
<!-- HEADER AREA -->
|
3 |
<header class="full-width header-area"> |
4 |
<div class="row"> |
5 |
<div class="large-12 columns"> |
6 |
<h2>Foundation-4 Custom Top Bar</h2> |
7 |
</div>
|
8 |
</div>
|
9 |
</header>
|
10 |
|
11 |
<!-- NAVIGATION AREA -->
|
12 |
<div class="full-width navigation-area"> |
13 |
<div class="row"> |
14 |
<div class="large-12 columns"> |
15 |
|
16 |
<nav class="top-bar"></nav> |
17 |
</div>
|
18 |
</div>
|
19 |
</div>
|
20 |
|
21 |
<!-- CONTENT AREA -->
|
22 |
<div class="full-width content-area"> |
23 |
<div class="row"> |
24 |
<div class="large-12 columns"> |
25 |
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Harum, asperiores, voluptas, veniam commodi impedit tenetur dolores cumque facere explicabo esse quaerat veritatis laboriosam eius modi amet maxime non officia nemo? Iste, quisquam, voluptatum, dolor nam reiciendis unde aliquam numquam necessitatibus odio et perspiciatis facere nihil inventore ullam aspernatur corporis veritatis quia dolorum? Sed, hic, eos quis quibusdam eum aut optio repudiandae at! Eligendi, neque ratione alias enim quae magnam dolores esse pariatur earum laborum reiciendis nobis sunt sequi sapiente ducimus iure ipsam. Sapiente, minima, rerum, facere quos saepe pariatur magni dolorem cum amet nemo quis laborum ipsa dignissimos ducimus inventore modi rem cumque quibusdam quam asperiores! Optio, nobis suscipit molestias voluptas veritatis aspernatur accusamus excepturi rem quaerat impedit animi voluptate at facilis aliquid cum fugit labore omnis provident recusandae autem. Doloribus, mollitia quos officiis quas sapiente nam dolor praesentium maxime cupiditate illum? Rem, esse, nulla vitae adipisci sequi deleniti quasi!</p> |
26 |
</div>
|
27 |
</div>
|
28 |
</div>
|
29 |
|
30 |
<!-- FOOTER AREA -->
|
31 |
<div class="full-width footer-area"> |
32 |
<div class="row"> |
33 |
<div class="large-12 columns"> |
34 |
© 2013
|
35 |
</div>
|
36 |
</div>
|
37 |
</div>
|
Шаг 2: Разметка верхней панели
Перед тем, как приступить к стилизации, мы выложим необходимую HTML-структуру, чтобы заставить работать верхнюю панель Foundation. Нам нужно пять основных элементов, чтобы запустить двигатель:
nav с class = "top-bar"
ul с class = "title-area"
-
li c class = "toggle-topbar"
= развернуть меню в мобильном макете раздел с классом = "top-bar-section"
-
ul с class="left"
иul с class="right"
Теперь давайте настроим эти основы и реализуем пять элементов.
Примечание: В этом учебном примере мы хотим создать собственное меню навигации, удалив в нем заголовок (который обычно содержит логотип в текстовой или графической форме). Чтобы сделать это, мы просто оставляем li с class = "name" в ul с class = "title-area" пустым.
Кроме того, давайте добавим некоторые элементы меню и выпадающее меню, пока мы на нем. Чтобы включить раскрывающийся список, добавьте класс «has-dropdown» к элементу li, в котором вы хотите разместить раскрывающийся список, а затем введите новый ul с классом «dropdown». Чтобы указать текущую активную страницу, мы можем присвоить нашему текущему пункту меню класс «active» для элемента li. Мы можем оставить ul class = "right" пустым. Обычно вы используете эту область, чтобы добавить кнопку или форму ввода для поиска. Для получения дополнительной информации об особенностях разметки верхней панели, взгляните на Foundation for Beginners: The Top Bar.
Посмотрите на следующий HTML, комментарии объясняют, как он создается.
1 |
|
2 |
<!-- Nav Wrap -->
|
3 |
<nav class="top-bar"> |
4 |
<ul class="title-area"> |
5 |
<!-- Title Area -->
|
6 |
<li class="name"></li> |
7 |
<!-- Remove the class "menu-icon" to get rid of menu icon. Take out "Menu" to just have icon alone -->
|
8 |
<li class="toggle-topbar menu-icon"><a href="#"><span>Menu</span></a></li> |
9 |
</ul>
|
10 |
|
11 |
<!-- The Section wrap -->
|
12 |
<section class="top-bar-section"> |
13 |
|
14 |
<!-- Left Nav Section -->
|
15 |
<ul class="left"> |
16 |
<li class="active"><a href="#">Home</a></li> |
17 |
<li><a href="#">About us</a></li> |
18 |
<li><a href="#">Our products</a></li> |
19 |
<li><a href="#">Portfolio</a></li> |
20 |
<li><a href="#">Blog</a></li> |
21 |
<li><a href="#">Prices</a></li> |
22 |
<li class="has-dropdown"> |
23 |
<a href="#">Features</a> |
24 |
<ul class="dropdown"> |
25 |
<li><a href="#">Modalboxes</a></li> |
26 |
<li><a href="#">Submenu's and navigation</a></li> |
27 |
<li><a href="#">Price tables</a></li> |
28 |
<li><a href="#">Buttons</a></li> |
29 |
<li><a href="#">Button groups</a></li> |
30 |
<li><a href="#">Labels, Keystrokes and Tooltips</a></li> |
31 |
<li><a href="#">Alert boxes</a></li> |
32 |
<li><a href="#">Columns</a></li> |
33 |
</ul>
|
34 |
</li>
|
35 |
<li><a href="#">Contact</a></li> |
36 |
</ul>
|
37 |
|
38 |
<!-- Right Nav Section -->
|
39 |
<ul class="right"></ul> |
40 |
|
41 |
</section>
|
42 |
</nav>
|
Шаг 3: Результаты пока что
Посмотрите на результаты в вашем браузере. Теперь мы настроили базовую основу Foundation, используя Top Bar для создания горизонтального меню. Чтобы разместить его где-то кроме верхней части браузера, просто поместите nav class = "top-bar" в строку и столбцы div.
Когда вы измените размер браузера, вы увидите, что меню изменяется в предопределенной точке останова.
Следующим шагом будет придание этому стилю. Мы сосредоточимся на том, как мы можем стилизовать Top Bar и какие классы используются для этого.



Настройка CSS
Шаг 1: Общий стиль
Если вы этого еще не сделали, создайте новый файл CSS, назовите его style.css и поместите его в папку css вашей загрузки для Foundation. Не забудьте включить его в тег заголовка вашего индексного файла, ссылаясь на него под фундаментом .css следующим образом:
1 |
|
2 |
<head>
|
3 |
<meta charset="utf-8"> |
4 |
<meta name="viewport" content="width=device-width"> |
5 |
<title>Foundation 4</title> |
6 |
|
7 |
<link rel="stylesheet" href="css/foundation.css"> |
8 |
<link rel="stylesheet" href="css/style.css"> |
9 |
|
10 |
<script src="js/vendor/custom.modernizr.js"></script> |
11 |
</head>
|
Если вы не поместите его в файл foundation.css, он не заменит классы Top Bar.
Хорошо, давайте сначала разберемся со стилем заголовка, навигации, содержимого и области нижнего колонтитула. Для области навигации мы будем использовать фоновое изображение, которое вы предварительно загрузили. Общий дизайн не так уж и сложен, взгляните на CSS ниже. Мы добавляем класс полной ширины в каждую область, чтобы убедиться, что он заполняет всю ширину браузера.
1 |
|
2 |
body { |
3 |
background-color: #ccc; |
4 |
}
|
5 |
|
6 |
/** Set the backgrounds for the different sections **/
|
7 |
.header-area { |
8 |
background-color: #2d465c; |
9 |
min-height: 160px; |
10 |
}
|
11 |
|
12 |
.navigation-area { |
13 |
background-image: url('../img/navigation-container.jpg'); |
14 |
background-repeat: repeat-x; |
15 |
}
|
16 |
|
17 |
.content-area { |
18 |
padding: 50px 0 70px 0; |
19 |
}
|
20 |
|
21 |
.footer-area { |
22 |
background-color: #1f1f1f; |
23 |
color: #fff; |
24 |
min-height: 50px; |
25 |
padding: 20px 0 0 0; |
26 |
}
|
27 |
|
28 |
.full-width { |
29 |
min-width:100%; |
30 |
position: relative; |
31 |
}
|
32 |
|
33 |
h2 { |
34 |
color: #fff; |
35 |
font-weight: normal; |
36 |
margin-top: 50px; |
37 |
}
|
Шаг 2: стили верхней панели
Если вы посмотрите на результаты сейчас, меню все еще выглядит немного неуместным. Это потому, что он все еще использует CSS по умолчанию. Давайте исправим это!
Есть пара CSS-классов, к которым мы должны обратиться, чтобы получить желаемые результаты. Сначала мы удалим часть черного фона в классе .top-bar и списках разделов и изменим высоту и высоту строки на 58px (высота области навигации). Проверьте комментарии для дальнейшего объяснения.
1 |
|
2 |
/** Changes background color, height and margin of the border **/
|
3 |
.top-bar { |
4 |
background: none; |
5 |
height: 58px; |
6 |
line-height: 58px; |
7 |
margin-bottom: 0; |
8 |
}
|
9 |
|
10 |
/** Removes black background on menu bar **/
|
11 |
.top-bar-section ul { |
12 |
background: none; |
13 |
text-transform: uppercase; |
14 |
}
|
15 |
|
16 |
/** Removes black background on menu item **/
|
17 |
.top-bar-section li a:not(.button) { |
18 |
background: none; |
19 |
line-height: 58px; |
20 |
padding: 0 27px; |
21 |
}
|
Мы удалили черный фон по умолчанию из nav class = "top-bar", списков разделов и привязок меню. Мы корректируем высоту, высоту строки и отступы и преобразуем текст в верхний регистр, чтобы все это соответствовало нашему индивидуальному дизайну.
Если вы обновите свой браузер, вы увидите, что он начинает обретать форму. Давайте продолжим с выпадающими меню, пунктами меню, активным и парящим состояниями. Посмотрите на CSS ниже и снова прочитайте закомментированный текст для объяснения:
1 |
|
2 |
/** Changes the active menu item from default black to a gradient **/
|
3 |
.top-bar-section ul li.active > a { |
4 |
background: rgb(0, 0, 0); |
5 |
background: linear-gradient(to bottom, rgba(0, 0, 0, 0.4) 0%, rgba(0, 0, 0, 0.7) 100%) repeat scroll 0 0 transparent; |
6 |
color: #fff; |
7 |
}
|
8 |
|
9 |
/** Changes the hover state of non active menu items **/
|
10 |
.top-bar-section li:hover a { |
11 |
background: linear-gradient(to bottom, rgba(0, 0, 0, 0.4) 0%, rgba(0, 0, 0, 0.7) 100%) repeat scroll 0 0 transparent; |
12 |
color: #fff; |
13 |
}
|
14 |
|
15 |
/** Changes non active menu items text color to black **/
|
16 |
.top-bar-section ul li > a { |
17 |
color: #2d2d2d; |
18 |
}
|
19 |
|
20 |
/** Changes the hover state of dropdown menu items **/
|
21 |
.top-bar-section ul.dropdown li a:hover:not(.button) { |
22 |
background: none repeat scroll 0 0 rgba(0, 0, 0, 0.9); |
23 |
}
|
24 |
|
25 |
/** IMPORTANT fill for the ul dropdown container **/
|
26 |
.top-bar-section ul.dropdown { |
27 |
background: #333; |
28 |
color: #fff; |
29 |
}
|
30 |
|
31 |
/** This fixes the position and the color of the dropdown arrow **/
|
32 |
.top-bar-section .has-dropdown > a:after { |
33 |
border-color: rgba(0, 0, 0, 1) transparent transparent; |
34 |
margin-top: 2.5px; |
35 |
}
|
Мы внесли несколько изменений в наше меню здесь. Во-первых, мы изменили черный фон по умолчанию активного элемента меню на CSS-градиент. Затем мы дали неактивным пунктам меню состояние, напоминающее зависание. Чтобы сделать неактивные пункты меню более четкими, мы изменили цвет текста на темно-серый. Изменения, внесенные в .top-bar-section li: hover
a будет держать состояние раскрывающегося меню на наведенной, когда ваша мышь перемещается над выпадающими элементами. Для завершения CSS мы дали выпадающему контейнеру ul фоновую заливку и изменили положение по умолчанию для стрелки раскрывающегося списка из-за наших корректировок отступа для верхней панели.
Шаг 3: Результаты пока что
Обновите ваш браузер и посмотрите на результаты. Мы еще не совсем закончили; нам все еще нужно убедиться, что все это выглядит хорошо, когда мы изменяем размер экрана нашего браузера (или, если на то пошло, когда мы смотрим на это на меньшем устройстве). Чтобы это произошло, мы добавим несколько медиазапросов в наш CSS-файл.
Настройка медиазапросов
Шаг 1: Медиа-запросы
Есть несколько вещей, которые нам нужно настроить, чтобы меню работало с нашим индивидуальным дизайном при уменьшении размера экрана. В основном это включает в себя добавление отступов, высоты строки, цветов текста и цветов фона. Посмотрите на CSS ниже и посмотрите на комментарии, чтобы получить объяснение для каждого раздела.
1 |
|
2 |
@media only screen and (max-width: 942px) { |
3 |
|
4 |
/* Makes the responsive menu fit in the navigation container and change its background to black */
|
5 |
.top-bar ul { |
6 |
background-color: rgba(0, 0, 0, 0.5); |
7 |
padding-bottom: 13px; |
8 |
}
|
9 |
|
10 |
/* Change non active menu item color to black */
|
11 |
.top-bar-section ul li > a { |
12 |
color: #fff; |
13 |
}
|
14 |
|
15 |
/* Gives the dropdown ul a black fill */
|
16 |
.top-bar-section ul { |
17 |
background: #000; |
18 |
}
|
19 |
|
20 |
/* Give the BACK button after going in a submenu the appropriate filling */
|
21 |
.top-bar-section .dropdown li.title h5 a { |
22 |
line-height: 57px; |
23 |
}
|
24 |
|
25 |
/* This fixes the position and the color of the dropdown arrow */
|
26 |
.top-bar-section .has-dropdown > a:after { |
27 |
border-color: rgba(255, 255, 255, 1) transparent transparent; |
28 |
margin-top: 2.5px; |
29 |
}
|
30 |
|
31 |
} /* end media query */ |
Шаг 2: наслаждайтесь результатами
Сохраните файл, обновите ваш браузер и поиграйтесь с размером браузера. Как видите, меню прекрасно вписывается в наш дизайн.



Заключение
Итак, мы завершим наше руководство о том, как мы можем создать настраиваемое адаптивное меню, используя верхнюю панель из платформы Foundation 4. И помните, меню не должно быть в верхней части страницы. Просто оберните его в свою строку и столбцы div, и вы сможете разместить его практически где угодно!
Foundation - отличный инструмент для быстрой разработки адаптивных дизайнов, и когда вы знаете, как это сделать, вы можете в значительной степени изменить его по своему усмотрению. Повеселись!