Advertisement
  1. Web Design
  2. Foundation for Apps

Создаем панель навигации off-canvas с помощью Foundation 5

Scroll to top
Read Time: 11 min

() translation by (you can also view the original English article)



В предыдущем уроке мы узнали, как настроить верхнюю панель Foundation 4 с помощью CSS. С тех пор ZURB выпустили Foundation 5; быстрее, компактнее и мощнее своего предшественника. Что также заметно, так это то, что ZURB вернул функциональность Off Canvas, которую можно найти в Foundation 3.

Сегодня мы собираемся объединить функцию off-canvas с нашей верхней панелью навигации. Результатом будет удобная пользовательская навигация для пользователей настольных компьютеров и удобное меню для планшетных и мобильных пользователей.

Примечание: Функциональность, которую мы здесь используем, не работает для IE8 и ниже. Я включил исправление для IE9 в ресурсы, перечисленные в конце учебника.

Требования

Чтобы следовать этому руководству, вам понадобится некоторый опыт в следующем:

  • Базовое понимание основы Foundation и системы гридов
  • Знание основ работы с Sass и Compass от Foundation

Начинем

Настройка среды

Если вы еще этого не сделали, включите Compass и Sass, используя документацию Foundation Sass, если вам нужно направление к действию. Если вы уже это сделали, выполните быструю настройку для создания нового проекта Foundation 5 с помощью командной строки:

Командная строка Ruby

Перейдите в ваш рабочий каталог

cd c:/user/your-working-environment

Используйте эту команду для создания своего проекта

foundation new your-project

Перейдите к новому файлу проекта

cd your-project

И используйте эту команду, чтобы компас запустился и скомпилировал ваши файлы Sass

compass watch

Если все прошло успешно, ваш каталог должен выглядеть примерно так:

Директория проекта Foundation 5

Остается только одна вещь, и это нужно для создания нашего файла style.scss. Сделайте это, создав новый файл в папке scss и назовите этот файл style.scss. Нам понадобится этот файл позже. Если вы используете Compass, ваш файл style.scss уже должен быть скомпилирован в файл style.css в папке stylesheets. Отлично, у нас есть все настройки, давайте начнем с кодирования нашей общей HTML-структуры.

Настройка структуры HTML

Шаг 1. Общая разметка

Откройте index.html и удалите весь контент между тегами body, за исключением сценариев непосредственно перед </body>. Мы нуждаемся в них, чтобы все функции Foundation работали. Во-вторых, добавьте следующую строку кода в тег <head>, чтобы убедиться, что мы загружаем наш CSS-файл.

1
<link rel="stylesheet" href="stylesheets/style.css" />

С этой настройкой давайте добавим пару разделов и предоставим нашу страницу некоторому фиктивному контенту. Мы начнем с некоторых основ, добавив раздел заголовка, главного, сервисного, призыва к действию, нижнего колонтитула и авторского права.

1
<!-- HEADER SECTION -->
2
<header>
3
  <div class="row">
4
	    <div class="small-12 medium-12 large-12 columns">
5
			<div class="logo">
6
				<h1>Foundation 5 Topbar / Offcanvas menu</h1>
7
			</div> <!-- END DIV.LOGO -->
8
		</div> <!-- END 12 COLUMNS -->
9
	</div> <!-- END ROW -->
10
</header> <!-- END HEADER -->
11
12
<!-- MAIN SECTION -->
13
<section class="main-section">
14
	<!-- CONTENT SECTION -->
15
	<section class="full-width content-section">
16
		<div class="row">
17
			<div class="small-12 medium-12 large-12 columns">
18
				<h2>Moving aside for the Offcanvas people!</h2>
19
				<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Vitae, minus molestias dolores blanditiis esse? Quam, accusamus, quo, eum, ipsum voluptatibus aliquam perspiciatis qui porro est sit eligendi suscipit. Expedita, eligendi, laboriosam animi itaque accusantium repudiandae dicta ullam quia ipsum amet quam nesciunt non! Porro, fuga molestiae quaerat accusantium nesciunt omnis.</p>
20
				<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Vero, minima, quidem repellendus facilis dignissimos laboriosam doloribus sequi tempora iusto facere maxime quasi est ex qui commodi nobis aliquid id eius magnam consectetur. Ut deserunt repellat asperiores dolores odio! Incidunt, esse, distinctio modi ratione facilis iusto tempora saepe nisi nostrum culpa velit eaque quos dolore repellat facere accusamus architecto iure similique numquam autem asperiores error cumque eum. Dolor, minima aspernatur autem eaque ipsa officiis rem! Suscipit, esse, quos. Quos, perferendis, iure nobis modi perspiciatis enim error nulla asperiores dignissimos harum. Dolor, non rem in nobis illum id hic laboriosam blanditiis aliquid!</p>
21
			</div> <!-- END 12 COLUMNS -->
22
		</div> <!-- END ROW -->
23
	</section> <!-- END SECTION.CONTENT-SECTION -->
24
25
	<!-- SERVICES SECTION -->
26
	<section class="full-width services-section">
27
		<div class="row">
28
			<div class="small-12 medium-4 large-4 columns">
29
				<h3>Service #1</h3>
30
				<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus, veniam, asperiores fugit quas quaerat soluta in quibusdam placeat incidunt suscipit esse neque quisquam eaque rem!</p>
31
			</div>
32
33
			<div class="small-12 medium-4 large-4 columns">
34
				<h3>Service #3</h3>
35
				<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquam, nihil nemo tempore voluptatum veritatis corrupti id doloremque. Saepe, in sequi voluptatem impedit rem omnis aliquam?</p>
36
			</div>
37
38
			<div class="small-12 medium-4 large-4 columns">
39
				<h3>Service #3</h3>
40
				<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptate ducimus aut commodi eius! Sequi, magni labore ea iusto quibusdam autem repellendus ipsum dolorem quasi maxime!</p>
41
			</div>
42
43
		</div> <!-- END ROW -->
44
	</section> <!-- END SECTION.FULL-WIDTH.SERVICES-SECTION -->
45
46
	<!-- CALL 2 ACTION -->
47
	<section class="full-width call-to-action">
48
		<div class="row">
49
			<div class="small-12 medium-12 large-12 columns">
50
				<a href="#" class="button radius">Get in touch with us!</a>
51
			</div>
52
		</div>
53
	</section>
54
</section> <!-- END SECTION.MAIN-SECTION -->
55
56
<!-- FOOTER SECTION -->
57
<footer>
58
	<div class="row">
59
    	<div class="small-12 medium-4 large-4 columns">
60
		    <h4>Foundation</h4>
61
			<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus, veniam, asperiores fugit quas quaerat soluta in quibusdam placeat incidunt suscipit esse neque quisquam eaque rem!</p>
62
		</div>
63
64
		<div class="small-12 medium-4 large-4 columns">
65
			<h4>Foundation</h4>
66
			<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus, veniam, asperiores fugit quas quaerat soluta in quibusdam placeat incidunt suscipit esse neque quisquam eaque rem!</p>
67
		</div>
68
69
		<div class="small-12 medium-4 large-4 columns">
70
			<h4>Foundation</h4>
71
			<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus, veniam, asperiores fugit quas quaerat soluta in quibusdam placeat incidunt suscipit esse neque quisquam eaque rem!</p>
72
		</div>
73
	</div> <!-- END ROW -->
74
</footer> <!-- END FOOTER -->
75
76
<!-- COPYRIGHT SECTION -->
77
<section class="full-width copyright-section">
78
	<div class="row">
79
	    <div class="small-12 columns">
80
			<p>&copy; 2014</p>
81
		</div> <!-- END 12 COLUMNS -->
82
	</div> <!-- END ROW -->
83
</section> <!-- END SECTION.FULL-WIDTH COPYRIGHT-SECTION -->

Здесь мы добавили раздел заголовка с логотипом, затем основной раздел, разделенный на раздел контента, три службы и призыв к действию. Наконец, есть раздел нижнего колонтитула с тремя столбцами и секцией авторского права. Прямая разметка до сих пор, давайте доберемся до верхней панели!

Шаг 2. Верхняя панель.

Мы собираемся разместить нашу верхнюю панель в разделе класса navigation-section для его стилизации. Мы также присвоим другой класс этому разделу: show-for-large-up. Это гарантирует то, что верхняя панель отображается только для устройств с допустимой минимальной шириной и выше. Это один из многих классов Visibility, которые предоставляет нам Foundation (вы можете больше узнать об этом в документации Foundation). Теперь разметка:

1
<!-- LARGE SCREEN TOP BAR MENU -->
2
<section class="navigation-section show-for-large-up">
3
	<div class="row">
4
		<div class="large-12 columns">
5
			
6
            <!-- TOP BAR INITIALIZATION -->
7
			<nav class="top-bar" data-topbar>
8
				<ul class="title-area">
9
					<li class="name">
10
						<h1></h1>
11
					</li>
12
				</ul> <!-- END UL.TITLE-AREA -->
13
14
				<!-- TOP BAR MENU ELEMENTS -->
15
				<section class="top-bar-section">
16
					<ul class="left">
17
						<li class="active"><a href="index.html">Home</a></li>
18
						<li class="has-dropdown">
19
							<a href="blog.html">Blog</a>
20
							<ul class="dropdown">
21
								<li><a href="blog.html">Archive</a></li>
22
								<li><a href="post.html">Single</a></li>
23
							</ul>
24
						</li>
25
						<li class="has-dropdown">
26
							<a href="page.html">Page</a>
27
							<ul class="dropdown">
28
								<li><a href="page.html">Full-wdith</a></li>
29
								<li><a href="sidebar-left.html">Left Sidebar</a></li>
30
								<li><a href="sidebar-right.html">Right Sidebar</a></li>
31
							</ul>
32
						</li>
33
						<li><a href="portfolio.html">Portfolio</a></li>
34
						<li class="has-dropdown">
35
							<a href="#">Dropdown</a>
36
							<ul class="dropdown">
37
								<li><a href="#">First link in dropdown</a></li>
38
								<li><a href="#">Second link in dropdown</a></li>
39
								<li><a href="#">Third link in dropdown</a></li>
40
							</ul>
41
						</li>
42
					</ul>
43
				</section> <!-- END SECTION.TOP-BAR-SECTION -->
44
			</nav> <!-- END NAV.TOP-BAR -->
45
46
		</div> <!-- END 12 COLUMNS -->
47
	</div> <!-- END ROW -->
48
</section> <!-- END SECTION.NAVIGATION-SECTION -->

Примечание: Встроим панель в навигацию. Таким образом мы убеждаемся, что JavaScript для нашего Top Bar работает правильно (например, выпадающий список).

Шаг 3: Разметка Off-Canvas

Наше меню будет скрыто за пределами области просмотра. В тот момент, когда мы нажимаем меню, область Offcanvas будет перемещаться (слева в нашем случае) и перемещать содержимое страницы вправо. В нашей настройке мы собираемся исключить заголовок и нижний колонтитул в этом движении. Только область содержимого будет отодвинута в сторону, оставив верхний и нижний колонтитулы на месте.

Кроме того, при прокрутке вниз наш заголовок (который может содержать логотип и, возможно, другой контент), будет отображаться в верхней части страницы (Примечание: на странице должно быть достаточно контента для этого, потому что в противном случае раздел нижнего колонтитула также плавайте над нашим меню Offcanvas). Это означает, что мы должны «обернуть» Off-canvas вокруг нашего основного раздела контента. После раздела навигации верхней панели и перед нашим основным разделом содержимого поместите следующий HTML:

1
<!-- OFF CANVAS SECTIONS WRAPPING THE MAIN CONTENT -->
2
<div class="off-canvas-wrap">
3
    <div class="inner-wrap">
4
5
		<!-- OFF CANVAS MENU BAR -->
6
		<nav class="tab-bar hide-for-large-up">
7
8
			<section class="left-small">
9
				<a class="left-off-canvas-toggle menu-icon" ><span></span></a>
10
			</section>
11
12
			<section class="right tab-bar-section">
13
				<h1 class="title">Menu</h1>
14
			</section>
15
16
		</nav> <!-- END NAV.TAB-BAR HIDE-FOR-LARGE-UP -->
17
18
		<!-- OFF CANVAS MENU -->
19
		<aside class="left-off-canvas-menu">
20
			<ul class="off-canvas-list">
21
				<li><label>Navigation</label></li>
22
				<li><a href="index.html">Home</a></li>
23
			</ul>
24
			<ul class="off-canvas-list">
25
				<li class="has-dropdown"><a href="blog.html">Blog</a>
26
					<ul class="off-canvas-list">
27
						<li><a href="blog.html">Archive</a></li>
28
						<li><a href="post.html">Single</a></li>
29
					</ul>
30
				</li>
31
			</ul>
32
			<ul class="off-canvas-list">
33
				<li class="has-dropdown"><a href="page.html">Page</a>
34
					<ul class="off-canvas-list">
35
						<li><a href="page.html">Full-width</a></li>
36
						<li><a href="sidebar-left.html">Left Sidebar</a></li>
37
						<li><a href="sidebar-right.html">Right Sidebar</a></li>
38
					</ul>
39
				</li>
40
			</ul>
41
			<ul class="off-canvas-list">
42
				<li><a href="portfolio.html">Portfolio</a></li>
43
			</ul>
44
		</aside>

Давайте разделим его. Мы создали два элемента; один с классом off-canvas-wrap и один с классом inner-wrap. Слои скрывает наш контент до момента нажатия кнопки меню. Внутренний слой содержит нашу панель меню навигации, меню левой стороны, а также раздел основного контента. Мы присвоили навигации класс hide-for-large-up, чтобы убедиться, что он отображается только для устройств средней и малой величины. Присвоив тегу aside класс left-off-canvas-menu, мы убедимся, что наше меню появляется слева от экрана. Элементы меню в нашем меню похожи на верхнюю панель. Для off-canvas мы используем неупорядоченный список с классом off-canvas-list, чтобы произошло немного волшебства.

Все, что осталось сделать, - дать пользователю возможность закрыть меню Offcanvas. После этого мы закрываем теги off-canvas-wrap и div-wrap. Добавьте это сразу после закрытия основного раздела.

1
    <!-- CLOSE THE OFF-CANVAS MENU -->
2
    <a class="exit-off-canvas"></a>
3
4
	</div>
5
</div> <!-- END OFF CANVAS -->

Шаг 4: результаты до сих пор

Давайте откроем наш браузер и найдем файл index.html, который мы только что отредактировали. Результат должен выглядеть примерно как на скриншотах ниже (попробуйте, измените размер вашего браузера!)

Верхняя панель HTML
HTML Offcanvas

Настройка Sass

Теперь у нас есть полностью функционирующая верхняя панель для пользователей настольных компьютеров и симпатичное меню для пользователей небольших устройств, таких как планшеты и телефоны. Тем не менее, наша страница на самом деле не похожа на настоящую веб-страницу, поэтому давайте продолжим и добавим ей немного вкуса.

Шаг 1: Общий стиль

Во-первых, мы придадим нашим общим разделам (заголовок, навигация, основной, нижний колонтитул и авторское право) некоторый цвет. Мы также придадим нашему тегу body приятный цвет фона и добавим класс full-width равный 100%. В HTML мы добавили, что класс полной ширины для разных разделов, чтобы убедиться, что они располагаются до границ браузера. Взгляните на Sass ниже:

1
body {
2
    background-color: #f1f1f1;
3
}
4
5
.full-wdith {
6
	min-width: 100%;
7
}
8
9
header {
10
	background: url('../images/stary-bg.png') #074e68;
11
	min-height: 175px;
12
	h1 {
13
		color: #fff;
14
		padding-top: 50px;
15
	}
16
}
17
18
.navigation-section {
19
	background-color: #333;
20
	.top-bar {
21
		li {
22
			text-transform: uppercase;
23
		}
24
	}
25
}
26
27
.main-section {
28
	padding: 30px 0 25px 0;
29
}
30
31
footer {
32
	background-color: #074e68;
33
	padding: 50px 0 40px 0;
34
	h4, p {
35
		color: #fff;
36
	}
37
}
38
39
.copyright-section {
40
	background-color: #333;
41
	color: #fff;
42
	padding: 25px 0 0 0;
43
}

Примечание: Чтобы добавить Starry BG, загрузите исходные файлы!

Мы дали нашему дизайну немного больше пространства, добавив немного отствупов и сделали полноразмерный дизайн, создав для всех разделов цвет фона и минимальную ширину 100%. Мы также сделали текст меню в верхнем регистре.

Шаг 2: Оформление верхней панели с помощью _settings.scss

Чтобы создать нашу панель, давайте залезем в файл _settings.scss. В зависимости от используемого редактора кода используйте параметр find и введите "Topbar". Здесь вы можете найти все настройки, чтобы настроить стандартную верхнюю панель. Для этого урока мы собираемся использовать два разных варианта; один, чтобы придать нашей панели немного больше высоты, а другой - немного увеличить размер шрифта. Раскомментируйте и измените следующие два параметра:

1
$topbar-height: 65px;
2
$topbar-link-font-size: rem-calc(15);

Шаг 3: Оформление меню с помощью _setting.scss

Мы также собираемся использовать файл настроек для нашего меню. Стандартная надпись довольно хороша, но давайте сделаем так, чтобы раздел навигации был такой же высоты, как и верхняя часть нашей верхней панели. В дополнение к этому, нам нужно будет немного поменять значок гамбургера, чтобы он оставался центрированным сверху. В файле настроек найдите и введите "Off-canvas". Раскомментируйте и измените следующие два параметра:

1
$tabbar-height: rem-calc(65);
2
$tabbar-hamburger-icon-top: rem-calc(16);

Шаг 4: Наслаждайтесь результатами

Сохраните файл, пусть compass скомпилирует ваши файлы и обновите браузер. Теперь наша страница более сочная, и снабжена отличной верхней панелью и меню! Ваши результаты должны выглядеть примерно так:

Sass Верхняя панель
Sass Меню

Заключение

Мы создали красивую, адаптивную страницу, используя панель Foundation и меню, добавили немного собственного стиля с помощью Sass, чтобы сделать его немного сочнее и настроили страницу с помощью файла _settings.scss.

Очевидно, мы можем сделать намного больше с _settings.scss, чем я продемонстрировал. Продолжайте экспериментировать с настройками, чтобы увидеть, как легко вы сможете настроить элементы Foundation на своем сайте или попробуйте их в демо версии, чтобы дополнительно настроить меню панели. Повеселись!

Ресурсы



Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Web Design tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.