Advertisement
  1. Web Design
  2. Foundation for Apps

Как построить сокращающуюся фиксированную верхнюю панель с помощью Foundation

Scroll to top
Read Time: 31 min

Russian (Pусский) translation by Liliya (you can also view the original English article)

В наши дни очень распространенной тенденцией является использование фиксированной навигации, которая сжимается, становясь менее навязчивой, поскольку пользователь прокручивает страницу вниз. В этом уроке я покажу вам, как вы можете добиться этого, используя верхнюю панель ZURBs Foundation, некоторые пользовательские sass и jQuery.  В завершении, мы добавим несколько медиа-запросов, чтобы сделать наше меню отзывчивым. Давайте начнем!

Требования

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

  • Основное понимание Foundation Topbar
  • Базовое понимание Foundation и Grid системы
  • Знание работы с Sass и Compass
  • Небольшой опыт использования jQuery для обработки некоторых событий

Начинаем

Сначала мы создадим рабочую среду. Если вы не знаете, как это сделать, используя Compass и Sass, ознакомьтесь с разделом Начало работы (Getting Started) в разделе Build a Top Bar Off-Canvas Navigation With Foundation 5.

Создайте свой новый проект Foundation и используйте  compass watch для компиляции вашего проекта. Мы создадим наш собственный style.scss в папке scss для наших настроек и некоторого общего стиля. С этой настройкой мы погрузимся в общую структуру HTML, поехали!

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

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

Запустив новый проект Foundation, перейдите в файл index.html и начните с удаления всего содержимого между тегами тела, за исключением скриптов непосредственно перед закрывающим тегом body. Then add the following line to your <head> чтобы импортировать наш style.css.

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

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

1
<!-- HEADER SECTION -->
2
 <div class="contain-to-grid header-section">
3
 
4
   <!-- TOPBAR SECTION -->
5
 	<nav class="top-bar important-class" data-topbar>
6
 
7
 	</nav> <!-- END TOPBAR SECTION -->
8
 </div> <!-- END HEADER SECTION

9
 

10
 <!-- CONTENT FILL WHEN SCROLL = 0 -->
11
 <div class="header-fill"></div>
12
 
13
 <!-- CONTENT SECTION -->
14
 <div class="row content-section">
15
 	<div class="main-content">
16
 		<div class="small-12 medium-12 large-12 columns">
17
 			<h1>Fancy Foundation Top Bar</h1>
18
 			<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Et, fugiat, explicabo architecto at praesentium modi soluta alias veniam voluptate magnam obcaecati facilis cumque voluptatum impedit eius reiciendis ad minus odio similique sequi molestiae voluptatem commodi aliquam assumenda numquam doloribus libero tempora vitae sed animi. Ratione, quasi iste fugiat debitis molestiae doloremque consequuntur hic delectus molestias repudiandae reprehenderit rerum reiciendis enim aperiam cum ut adipisci veritatis soluta illo praesentium consequatur voluptate possimus dolorem et officiis perspiciatis commodi quae eligendi alias culpa atque ducimus eum odit accusamus ad labore quod necessitatibus. Officiis, ducimus, voluptate doloremque nihil rerum consequuntur obcaecati fugiat cum veritatis quidem qui nulla distinctio laborum perspiciatis quia tempora eveniet tempore aliquam pariatur aliquid quibusdam aspernatur quis maiores minus quas culpa reprehenderit id iure optio asperiores? Excepturi, deleniti, at, expedita quod animi harum est sit iste distinctio consequuntur mollitia corporis soluta. Quos, asperiores voluptas totam nesciunt atque iusto commodi. Autem, animi eius odio commodi vitae nihil possimus neque minima obcaecati aspernatur voluptate dolorem consequuntur illo vel iste deserunt tempore eaque maxime cum ratione rem odit officia tempora ut recusandae saepe maiores quae repellat debitis atque est praesentium numquam mollitia dolor ipsum modi fuga veniam error perspiciatis quas provident optio similique iure.</p>
19
 			<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Et, fugiat, explicabo architecto at praesentium modi soluta alias veniam voluptate magnam obcaecati facilis cumque voluptatum impedit eius reiciendis ad minus odio similique sequi molestiae voluptatem commodi aliquam assumenda numquam doloribus libero tempora vitae sed animi. Ratione, quasi iste fugiat debitis molestiae doloremque consequuntur hic delectus molestias repudiandae reprehenderit rerum reiciendis enim aperiam cum ut adipisci veritatis soluta illo praesentium consequatur voluptate possimus dolorem et officiis perspiciatis commodi quae eligendi alias culpa atque ducimus eum odit accusamus ad labore quod necessitatibus. Officiis, ducimus, voluptate doloremque nihil rerum consequuntur obcaecati fugiat cum veritatis quidem qui nulla distinctio laborum perspiciatis quia tempora eveniet tempore aliquam pariatur aliquid quibusdam aspernatur quis maiores minus quas culpa reprehenderit id iure optio asperiores? Excepturi, deleniti, at, expedita quod animi harum est sit iste distinctio consequuntur mollitia corporis soluta. Quos, asperiores voluptas totam nesciunt atque iusto commodi. Autem, animi eius odio commodi vitae nihil possimus neque minima obcaecati aspernatur voluptate dolorem consequuntur illo vel iste deserunt tempore eaque maxime cum ratione rem odit officia tempora ut recusandae saepe maiores quae repellat debitis atque est praesentium numquam mollitia dolor ipsum modi fuga veniam error perspiciatis quas provident optio similique iure.</p>
20
 			<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Et, fugiat, explicabo architecto at praesentium modi soluta alias veniam voluptate magnam obcaecati facilis cumque voluptatum impedit eius reiciendis ad minus odio similique sequi molestiae voluptatem commodi aliquam assumenda numquam doloribus libero tempora vitae sed animi. Ratione, quasi iste fugiat debitis molestiae doloremque consequuntur hic delectus molestias repudiandae reprehenderit rerum reiciendis enim aperiam cum ut adipisci veritatis soluta illo praesentium consequatur voluptate possimus dolorem et officiis perspiciatis commodi quae eligendi alias culpa atque ducimus eum odit accusamus ad labore quod necessitatibus. Officiis, ducimus, voluptate doloremque nihil rerum consequuntur obcaecati fugiat cum veritatis quidem qui nulla distinctio laborum perspiciatis quia tempora eveniet tempore aliquam pariatur aliquid quibusdam aspernatur quis maiores minus quas culpa reprehenderit id iure optio asperiores? Excepturi, deleniti, at, expedita quod animi harum est sit iste distinctio consequuntur mollitia corporis soluta. Quos, asperiores voluptas totam nesciunt atque iusto commodi. Autem, animi eius odio commodi vitae nihil possimus neque minima obcaecati aspernatur voluptate dolorem consequuntur illo vel iste deserunt tempore eaque maxime cum ratione rem odit officia tempora ut recusandae saepe maiores quae repellat debitis atque est praesentium numquam mollitia dolor ipsum modi fuga veniam error perspiciatis quas provident optio similique iure.</p>
21
 			<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Et, fugiat, explicabo architecto at praesentium modi soluta alias veniam voluptate magnam obcaecati facilis cumque voluptatum impedit eius reiciendis ad minus odio similique sequi molestiae voluptatem commodi aliquam assumenda numquam doloribus libero tempora vitae sed animi. Ratione, quasi iste fugiat debitis molestiae doloremque consequuntur hic delectus molestias repudiandae reprehenderit rerum reiciendis enim aperiam cum ut adipisci veritatis soluta illo praesentium consequatur voluptate possimus dolorem et officiis perspiciatis commodi quae eligendi alias culpa atque ducimus eum odit accusamus ad labore quod necessitatibus. Officiis, ducimus, voluptate doloremque nihil rerum consequuntur obcaecati fugiat cum veritatis quidem qui nulla distinctio laborum perspiciatis quia tempora eveniet tempore aliquam pariatur aliquid quibusdam aspernatur quis maiores minus quas culpa reprehenderit id iure optio asperiores? Excepturi, deleniti, at, expedita quod animi harum est sit iste distinctio consequuntur mollitia corporis soluta. Quos, asperiores voluptas totam nesciunt atque iusto commodi. Autem, animi eius odio commodi vitae nihil possimus neque minima obcaecati aspernatur voluptate dolorem consequuntur illo vel iste deserunt tempore eaque maxime cum ratione rem odit officia tempora ut recusandae saepe maiores quae repellat debitis atque est praesentium numquam mollitia dolor ipsum modi fuga veniam error perspiciatis quas provident optio similique iure.</p>
22
 		</div>
23
 	</div>
24
 </div> <!-- END CONTENT SECTION -->
25
 
26
 <!-- FOOTER SECTION -->
27
 <div class="footer-section">
28
 	<div class="row">
29
 		<div class="small-12 medium-12 large-12 columns">
30
 			<p>&copy; Copyright 2014</p>
31
 		</div>
32
 	</div>
33
 </div> <!-- END FOOTER SECTION -->

Здесь мы создали раздел заголовка, включая раздел <nav>, раздел содержимого и нижний колонтитул. Есть несколько вещей, которые нужно отметить:

  • Наш <nav>  имеет класс .important-class, которые мы будем использовать, чтобы сообщить jQuery, какой элемент нужно настроить, когда мы собираемся прокручивать вниз.
  • Мы включили div с классом .header-fill. Мы будем использовать это, чтобы разместить некоторое пространство между верхней частью браузера и секцией содержимого, поскольку наш заголовок будет исправлен и имеет более высокий индекс z, а затем остальные элементы на странице.

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

Затем, мы собираемся написать HTML для нашей верхней панели. Нам нужна зона заголовка для нашего логотипа и раздел с <ul>  для хранения наших пунктов меню. Взгляните на следующий HTML:


1
<!-- TOPBAR SECTION -->
2
 <nav class="top-bar important-class" data-topbar>
3
 		
4
     <!-- TITLE AREA & LOGO -->
5
 	<ul class="title-area">
6
 		<li class="name">
7
 			<img src="img/Acme_Colour.png" alt="" id="logo-image">
8
 		</li>
9
 		<li class="toggle-topbar menu-icon"><a href="#"><span>menu</span></a></li>
10
 	</ul> <!-- END TITLE AREA & LOGO -->
11
 
12
     <!-- MENU ITEMS -->
13
 	<section class="top-bar-section">
14
 		<ul class="right">
15
 			<li class="active"><a href="index.php">Home</a></li>
16
 			<li><a href="blog.php">Blog</a></li>
17
 			<li><a href="#">About us</a></li>
18
 			<li><a href="#">Portfolio</a></li>
19
 			<li class="has-dropdown">
20
 				<a href="#">Services</a>
21
 				<ul class="dropdown">
22
 					<li><a href="#">Service #1</a></li>
23
 					<li><a href="#">Service #2</a></li>
24
 					<li><a href="#">Service #3</a></li>
25
 				</ul>
26
 			</li>
27
 			<li><a href="#">Contact</a></li>
28
 		</ul>
29
 	</section> <!-- END MENU ITEMS -->
30
 </nav> <!-- END TOPBAR SECTION -->

Мы добавили <ul>   title-area класса, в которой мы сохраняем наш логотип. Затем у нас есть <section> класс класса top-bar и <ul> с классом .right, содержащий все наши элементы списка. Наш образ имеет идентификатор logo-image, который нам также понадобится в нашем jQuery позже в этом уроке.

Шаг 3: Теперешние результаты

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

Настройка Sass

Чтобы получить желаемые результаты, нам понадобится базовый стиль для наших разделов, особенно заголовок и раздел Top Bar. Мы собираемся использовать Sass , чтобы это получилось.

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

Для начала, мы собираемся дать всем нашим разделам некоторый базовый стиль. Взгляните на Sass ниже:

1
$primary-color: #ef4523;
2
 
3
 /*

4
    HEADER SECTION

5
    ========================================================================== */
6
 .header-section {
7
     -webkit-box-shadow: 0 0 5px 0 rgba(0,0,0,0.4);
8
 	box-shadow: 0 0 5px 0 rgba(0,0,0,0.4);
9
 	position: fixed;
10
 	z-index: 999;
11
 	min-width: 100%;
12
 }
13
 
14
 .contain-to-grid {
15
 	background-color: rgba(255, 255, 255, 0.97);
16
 }
17
 
18
 // FILL USED FOR HEADER
19
 .header-fill {
20
 	background: #fff;
21
 	height: 135px;
22
 	.tablet-mobile-logo img {
23
 		padding-top: 30px;
24
 	}
25
 }
26
 
27
 // USED FOR JQUERY ACTION
28
 .padding-on-my-header {
29
 	padding: 17px 0.9375rem 62px 0.9375rem;
30
 	ul.title-area img {
31
 		margin: -5px 0 0 0;
32
 	}
33
 }
34
 
35
 .full-width {
36
 	min-width: 100%;
37
 }
38
 
39
 p {
40
 	line-height: 3rem;
41
 	padding-bottom: 30px;
42
 }
43
 
44
 
45
 /*

46
    CONTENT SECTION

47
    ========================================================================== */
48
 
49
 
50
 .content-section {
51
 	.main-content {
52
 		margin-top: 35px;
53
 	}
54
 }
55
 
56
 
57
 /*

58
    FOOTER SECTION

59
    ========================================================================== */
60
 
61
 .footer-section {
62
 	background: #333;
63
 	min-height: 100px;
64
 	p {
65
 		color: #fff;
66
 		margin-top: 50px;
67
 	}
68
 }

Здесь мы используем переменную основного цвета, которую мы собираемся использовать для некоторых стилей Top Bar. Наш заголовок имеет приятную тонкую тень, поэтому на самом деле выглядит так, будто он плавает над остальной частью контента. Установив свое положение на фиксированное и сделав z-index: 999, мы следим за тем, чтобы навигационная панель попадала в верхнюю часть браузера, когда мы прокручиваем вниз и он остается выше всех остальных элементов на странице.

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

Шаг 2: Стиль верхней панели

Теперь мы добавим стиль, чтобы придать нашей верхней панели приятный, гладкий вид. Вы также можете настроить некоторые параметры верхней панели в файле _settings.scss, но я покажу вам, как это сделать, используя наши собственные переопределения. Sass ниже объясняет, что и где происходит:

1
/*

2
    TOPBAR NAVGATION

3
    ========================================================================== */
4
 .top-bar
5
 {
6
     background: none;
7
 	padding: 45px 0.9375rem 90px 0.9375rem;
8
 	transition: all 0.5s ease 0.1s;
9
 	// LOGO ADJUSTMENT
10
 	ul.title-area img {
11
 		margin: -10px 0 0 0;
12
 	}
13
 	.top-bar-section ul {
14
 		background: none;
15
 		// MENU ITEM STYLES
16
 		li a:not(.button), li.active a:not(.button) {
17
 			background: none;
18
 			line-height: 30px;
19
 			font-size: 12px;
20
 			padding: 0;
21
 			margin: 5px 0 0 0;
22
 			text-transform: uppercase;
23
 		}
24
 		// MENU ITEM HOVERS
25
 		li a:not(.button):hover {
26
 			background: none;
27
 			border-bottom: 2px solid $primary-color;
28
 			color: #222;
29
 		}
30
 		// MENU ITEM ACTIVE
31
 		li.active a:not(.button) {
32
 			border-bottom: 2px solid $primary-color;
33
 			color: #222;
34
 			&:hover {
35
 				background: none;
36
 			}
37
 		}
38
 		li {
39
 			margin-left: 30px;
40
 			a {
41
 				color: #888;
42
 			}
43
 		}
44
 	}
45
 	// DROPDOWN MENU
46
 	.top-bar-section ul li:hover:not(.has-form) > a {
47
 		color: #333;
48
 	}
49
 	.top-bar-section li ul.dropdown {
50
 		background: #fff;
51
 		border: 1px solid #ddd;
52
 		color: #888;
53
 		li {
54
 			border-bottom: 1px solid #ddd;
55
 			margin: 0;
56
 			padding: 5px 15px 5px 15px;
57
 		}
58
 	}
59
 	.top-bar-section li ul.dropdown li a:not(.button):hover, .top-bar-section li ul.dropdown li a:not(.button) {
60
 		background: none;
61
 		color: #222;
62
 		border-bottom: none;
63
 		padding: 20px -4px 40px 45px;
64
 	}
65
 	.top-bar-section ul.dropdown li:hover:not(.has-form) > a:not(.button) {
66
 		background: none;
67
 		color: #222;
68
 	}
69
 	// DROPDOWN ARROW
70
 	.has-dropdown > a:after {
71
 	    border-color: rgba(0, 0, 0, 0.5) transparent transparent;
72
 	    margin-top: -5px;
73
 	}
74
 }

Примечание: Мы собираемся переместить заголовок .padding-on-my-header класс ниже правил верхней панели. Это необходимо, чтобы отступы перекрывали верхнюю панель.

Мы добавили некоторые дополнения в нашу верхнюю панель, и установили переход 0,5 с, легкость 0.1s. Это обеспечит плавный эффект перехода, когда начнется наш jQuery. Фон установлен на none, так что наш заголовок имеет слегка прозрачный цвет, который мы предоставили нашему .contain-to-grid класс. Остальное - это некоторый базовый стиль для пунктов меню верхней панели, выпадающих меню, зависаний и активных состояний. Ничего не преувеличено, но оно дало нам чистый результат, добавив пропуски и пробелы.

Шаг 3: Теперешний результат

Давайте посмотрим, что у нас есть. Безусловно, начинает как-то выглядеть! Тем не менее, наше меню по-прежнему немного велико, когда мы прокручиваем страницу вниз. Вот где наш .padding-on-my-header шаги класса.

jQuery для эффекта

Давайте используем немного магии jQuery, чтобы добавить заголовок .padding-on-my-header класса на прокрутке и изменим логотип на меньший размер.

Шаг 1. Создание нашего init.js

Мы собираемся создать файл init.js для размещения нашего кода jQuery. Поместите его в папку / js и включите следующую строку внизу индексационного файла, перед тегом закрывающего тега, чтобы включить скрипт:

1
        <!-- JAVASCRIPTS -->
2
     	<script src="bower_components/jquery/dist/jquery.min.js"></script>
3
 		<script src="bower_components/foundation/js/foundation.min.js"></script>
4
 		<script src="js/app.js"></script>
5
         <!-- OUR JQUERY MAGIC -->
6
 		<script src="js/init.js"></script>
7
 	</body>
8
 </html>

Наш init.js будет содержать следующее:

1
jQuery(window).scroll(function() {
2
     if (scroll >= 50) {
3
         $('#logo-image').attr('src', 'img/Acme_Monogram_Colour.png')
4
         $(".important-class").addClass("padding-on-my-header");
5
     }
6
     if (scroll < 50) {
7
     	$(".important-class").removeClass("padding-on-my-header");
8
     	$('#logo-image').attr('src', 'img/Acme_Colour.png')
9
     }
10
 });

Давайте посмотрим, что на самом деле происходит здесь. Когда пользователь прокручивается вниз, мы выполняем следующую функцию: если пользователь прокручивает более 50 пикселей, мы делаем верхнюю панель меньшей и вставляем логотип меньшего размера:

  • Мы находим наш логотип и заменяем источник изображения нашим меньшим логотипом.
  • Затем мы ищем наш .important-class и добавляем к нему еще один класс: .padding-on-my-header

Когда мы вернемся назад и прокрутимся ниже 50 пикселей, мы сделаем обратное и удалим класс заполнения, вернув логотип большого ol'.

Шаг 2: Проверка результатов

Перейдите и вернитесь в браузер. Обновите страницу и попробуйте прокрутить вниз. Если все пойдет так, как планировалось, вы должны увидеть, как верхняя панель сокращается с плавным переходом, а большой логотип заменяется меньшим. Все идет очень хорошо. Но когда мы изменим размер нашего браузера, вы увидите, что он не совсем такой как нам нужно. Давайте позаботимся об этом!

Медиа-запросы для оптимизации мобильных устройств

Мы будем создавать медиа-запрос для устройств с разрешением 1024 пикселя и меньше. Чтобы это было правильно, нам нужно изменить небольшую точку остановки Foundation. Как вы говорите? Ну, это просто! Мы просто собираемся нырнуть в наш _settings.scss и искать следующую настройку:

1
// Media Query Ranges
2
 $small-range: (0em, 64em);
3
 $medium-range: (64em, 64em);
4
 $large-range: (64.063em, 90em);
5
 $xlarge-range: (90.063em, 120em);
6
 $xxlarge-range: (120.063em, 99999999em);

Как вы можете видеть, мы переместили малый диапазон от 0em-40em до 0em-64em, который вычисляет до 1024px; Наш средний диапазон теперь начинается с 64em. Сохраните настройки, чтобы изменения вступили в силу, и давайте перейдем к нашему медиа-запросу!

Шаг 1. Добавление медиа-запросов

Наша верхняя панель на более мелком устройстве не должна быть такой большой. Мы немного уменьшим ее и изменим наше меню. Мы также будем использовать гораздо меньшую заливку заголовка. Давайте посмотрим, что мы здесь сделали:

1
@media only screen and (max-width: 1024px) {
2
 
3
     .top-bar {
4
 		margin-top: 0;
5
 		padding: 0;
6
 		float: none;
7
 		// MENU BUTTON AND HAMBURGER ICON
8
 		.toggle-topbar.menu-icon a {
9
 			color: #222;
10
 			&:after {
11
     			box-shadow: 0 10px 0 1px #222, 0 16px 0 1px #222, 0 22px 0 1px #222;
12
     		}
13
 		}
14
 		// LOGO
15
 		ul.title-area img {
16
 			margin: -2px 0 0;
17
 			width: 145px;
18
 		}
19
 		.top-bar-section {
20
 			ul {
21
 				background: #333;
22
 				li {
23
 					margin-left: 0;
24
 				}
25
 				li > a {
26
 					background: $primary-color;
27
 					border-radius: 0;
28
 					font-size: 0.9rem;
29
 				}
30
 				// NORMAL BUTTONS
31
 				li:not(.has-form) a:not(.button) {
32
 					background: none;
33
 					color: #fff;
34
 					padding: 10px 15px;
35
 					margin-top: 0;
36
 					&:hover {
37
 						background: $primary-color;
38
 						color: #fff;
39
 						margin-top: 0;
40
 					}
41
 				}
42
 				// ACTIVE BUTTON
43
 				li.active:not(.has-form) a:not(.button) {
44
 					background: $primary-color;
45
 					color: #fff;
46
 					padding: 10px 15px;
47
 					margin-top: 0;
48
 					&:hover {
49
 						background: lighten($primary-color, 5%);
50
 						margin-top: 0;
51
 					}
52
 				}
53
 			}
54
 		}
55
 	}
56
 	// SMALLER IMAGE
57
 	.top-bar.padding-on-my-header ul.title-area img {
58
 		margin: 5px 13px 0;
59
 		width: 35px;
60
 	}
61
 	// EXPANDED TOPBAR MENU
62
 	.top-bar.expanded {
63
 		margin-top: 0;
64
 		padding: 0;
65
 		float: none;
66
 		.toggle-topbar.menu-icon a {
67
 			color: #fff;
68
 			&:after {
69
     			box-shadow: 0 10px 0 1px #fff, 0 16px 0 1px #fff, 0 22px 0 1px #fff;
70
     		}
71
 		}
72
 	}
73
 
74
 	// SMALLER HEADER
75
 	.header-fill {
76
 		height: 40px;
77
 	}
78
 
79
 }

Давайте посмотрим, что мы здесь сделали:

  • Мы удалили все дополнения и поля на верхней панели.
  • Мы указали текст меню, а значок гамбургера - серый цвет, вместо белого цвета по умолчанию, поэтому он отображается на нашем белом верхнем баре.
  • Мы установили наш логотип большего размера, чтобы поместиться в верхней панели.
  • В top-bar-section мы разрабатываем наши ответные пункты меню, гибкость и активные состояния.
  • Мы также изменяем размер и размещаем логотип меньшего размера.
  • Мы удалили некоторые дополнения и поля в нашем расширенном гибком меню.
  • Наконец, мы сделали наш .header-fill меньше, так что он равен высоте нашей верхней панели.

Шаг 2: Наслаждайтесь итоговыми результатами!

Когда мы вернемся к нашему браузеру и изменим его размер, мы можем теперь увидеть, что наша гибкая навигация в полном объеме. Прокрутите вниз и посмотрите, как изображение логотипа все еще меняется. Нажмите на значок меню, чтобы увидеть расширенную версию нашей гибкой навигации.

Заключение

С некоторыми масками Sass и jQuery нам удалось превратить мощную базовую верхнюю панель из ZURB's Foundation в потрясающий, модный притягательный заголовок с некоторыми плавными эффектами. Готовы к вашему пользованию или для ваших клиентских проектов. Счастливо!

Ресурсы




В наши дни очень распространенной тенденцией является использование фиксированной навигации, которая сжимается, становясь менее навязчивой, поскольку пользователь прокручивает страницу вниз. В этом уроке я покажу вам, как вы можете добиться этого, используя верхнюю панель ZURBs Foundation, некоторые пользовательские sass и jQuery.  В завершении, мы добавим несколько медиа-запросов, чтобы сделать наше меню отзывчивым. Давайте начнем!

Требования

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

  • Основное понимание Foundation Topbar
  • Базовое понимание Foundation и Grid системы
  • Знание работы с Sass и Compass
  • Небольшой опыт использования jQuery для обработки некоторых событий

Начинаем

Сначала мы создадим рабочую среду. Если вы не знаете, как это сделать, используя Compass и Sass, ознакомьтесь с разделом Начало работы (Getting Started) в разделе Build a Top Bar Off-Canvas Navigation With Foundation 5.

Создайте свой новый проект Foundation и используйте  compass watch для компиляции вашего проекта. Мы создадим наш собственный style.scss в папке scss для наших настроек и некоторого общего стиля. С этой настройкой мы погрузимся в общую структуру HTML, поехали!

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

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

Запустив новый проект Foundation, перейдите в файл index.html и начните с удаления всего содержимого между тегами тела, за исключением скриптов непосредственно перед закрывающим тегом body. Then add the following line to your <head> чтобы импортировать наш style.css.

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

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

1
<!-- HEADER SECTION -->
2
 <div class="contain-to-grid header-section">
3
 
4
 	<!-- TOPBAR SECTION -->
5
 	<nav class="top-bar important-class" data-topbar>
6
 
7
 	</nav> <!-- END TOPBAR SECTION -->
8
 </div> <!-- END HEADER SECTION

9
 

10
 <!-- CONTENT FILL WHEN SCROLL = 0 -->
11
 <div class="header-fill"></div>
12
 
13
 <!-- CONTENT SECTION -->
14
 <div class="row content-section">
15
 	<div class="main-content">
16
 		<div class="small-12 medium-12 large-12 columns">
17
 			<h1>Fancy Foundation Top Bar</h1>
18
 			<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Et, fugiat, explicabo architecto at praesentium modi soluta alias veniam voluptate magnam obcaecati facilis cumque voluptatum impedit eius reiciendis ad minus odio similique sequi molestiae voluptatem commodi aliquam assumenda numquam doloribus libero tempora vitae sed animi. Ratione, quasi iste fugiat debitis molestiae doloremque consequuntur hic delectus molestias repudiandae reprehenderit rerum reiciendis enim aperiam cum ut adipisci veritatis soluta illo praesentium consequatur voluptate possimus dolorem et officiis perspiciatis commodi quae eligendi alias culpa atque ducimus eum odit accusamus ad labore quod necessitatibus. Officiis, ducimus, voluptate doloremque nihil rerum consequuntur obcaecati fugiat cum veritatis quidem qui nulla distinctio laborum perspiciatis quia tempora eveniet tempore aliquam pariatur aliquid quibusdam aspernatur quis maiores minus quas culpa reprehenderit id iure optio asperiores? Excepturi, deleniti, at, expedita quod animi harum est sit iste distinctio consequuntur mollitia corporis soluta. Quos, asperiores voluptas totam nesciunt atque iusto commodi. Autem, animi eius odio commodi vitae nihil possimus neque minima obcaecati aspernatur voluptate dolorem consequuntur illo vel iste deserunt tempore eaque maxime cum ratione rem odit officia tempora ut recusandae saepe maiores quae repellat debitis atque est praesentium numquam mollitia dolor ipsum modi fuga veniam error perspiciatis quas provident optio similique iure.</p>
19
 			<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Et, fugiat, explicabo architecto at praesentium modi soluta alias veniam voluptate magnam obcaecati facilis cumque voluptatum impedit eius reiciendis ad minus odio similique sequi molestiae voluptatem commodi aliquam assumenda numquam doloribus libero tempora vitae sed animi. Ratione, quasi iste fugiat debitis molestiae doloremque consequuntur hic delectus molestias repudiandae reprehenderit rerum reiciendis enim aperiam cum ut adipisci veritatis soluta illo praesentium consequatur voluptate possimus dolorem et officiis perspiciatis commodi quae eligendi alias culpa atque ducimus eum odit accusamus ad labore quod necessitatibus. Officiis, ducimus, voluptate doloremque nihil rerum consequuntur obcaecati fugiat cum veritatis quidem qui nulla distinctio laborum perspiciatis quia tempora eveniet tempore aliquam pariatur aliquid quibusdam aspernatur quis maiores minus quas culpa reprehenderit id iure optio asperiores? Excepturi, deleniti, at, expedita quod animi harum est sit iste distinctio consequuntur mollitia corporis soluta. Quos, asperiores voluptas totam nesciunt atque iusto commodi. Autem, animi eius odio commodi vitae nihil possimus neque minima obcaecati aspernatur voluptate dolorem consequuntur illo vel iste deserunt tempore eaque maxime cum ratione rem odit officia tempora ut recusandae saepe maiores quae repellat debitis atque est praesentium numquam mollitia dolor ipsum modi fuga veniam error perspiciatis quas provident optio similique iure.</p>
20
 			<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Et, fugiat, explicabo architecto at praesentium modi soluta alias veniam voluptate magnam obcaecati facilis cumque voluptatum impedit eius reiciendis ad minus odio similique sequi molestiae voluptatem commodi aliquam assumenda numquam doloribus libero tempora vitae sed animi. Ratione, quasi iste fugiat debitis molestiae doloremque consequuntur hic delectus molestias repudiandae reprehenderit rerum reiciendis enim aperiam cum ut adipisci veritatis soluta illo praesentium consequatur voluptate possimus dolorem et officiis perspiciatis commodi quae eligendi alias culpa atque ducimus eum odit accusamus ad labore quod necessitatibus. Officiis, ducimus, voluptate doloremque nihil rerum consequuntur obcaecati fugiat cum veritatis quidem qui nulla distinctio laborum perspiciatis quia tempora eveniet tempore aliquam pariatur aliquid quibusdam aspernatur quis maiores minus quas culpa reprehenderit id iure optio asperiores? Excepturi, deleniti, at, expedita quod animi harum est sit iste distinctio consequuntur mollitia corporis soluta. Quos, asperiores voluptas totam nesciunt atque iusto commodi. Autem, animi eius odio commodi vitae nihil possimus neque minima obcaecati aspernatur voluptate dolorem consequuntur illo vel iste deserunt tempore eaque maxime cum ratione rem odit officia tempora ut recusandae saepe maiores quae repellat debitis atque est praesentium numquam mollitia dolor ipsum modi fuga veniam error perspiciatis quas provident optio similique iure.</p>
21
 			<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Et, fugiat, explicabo architecto at praesentium modi soluta alias veniam voluptate magnam obcaecati facilis cumque voluptatum impedit eius reiciendis ad minus odio similique sequi molestiae voluptatem commodi aliquam assumenda numquam doloribus libero tempora vitae sed animi. Ratione, quasi iste fugiat debitis molestiae doloremque consequuntur hic delectus molestias repudiandae reprehenderit rerum reiciendis enim aperiam cum ut adipisci veritatis soluta illo praesentium consequatur voluptate possimus dolorem et officiis perspiciatis commodi quae eligendi alias culpa atque ducimus eum odit accusamus ad labore quod necessitatibus. Officiis, ducimus, voluptate doloremque nihil rerum consequuntur obcaecati fugiat cum veritatis quidem qui nulla distinctio laborum perspiciatis quia tempora eveniet tempore aliquam pariatur aliquid quibusdam aspernatur quis maiores minus quas culpa reprehenderit id iure optio asperiores? Excepturi, deleniti, at, expedita quod animi harum est sit iste distinctio consequuntur mollitia corporis soluta. Quos, asperiores voluptas totam nesciunt atque iusto commodi. Autem, animi eius odio commodi vitae nihil possimus neque minima obcaecati aspernatur voluptate dolorem consequuntur illo vel iste deserunt tempore eaque maxime cum ratione rem odit officia tempora ut recusandae saepe maiores quae repellat debitis atque est praesentium numquam mollitia dolor ipsum modi fuga veniam error perspiciatis quas provident optio similique iure.</p>
22
 		</div>
23
 	</div>
24
 </div> <!-- END CONTENT SECTION -->
25
 
26
 <!-- FOOTER SECTION -->
27
 <div class="footer-section">
28
 	<div class="row">
29
 		<div class="small-12 medium-12 large-12 columns">
30
 			<p>&copy; Copyright 2014</p>
31
 		</div>
32
 	</div>
33
 </div> <!-- END FOOTER SECTION -->

Здесь мы создали раздел заголовка, включая раздел <nav>, раздел содержимого и нижний колонтитул. Есть несколько вещей, которые нужно отметить:

  • Наш <nav>  имеет класс .important-class, которые мы будем использовать, чтобы сообщить jQuery, какой элемент нужно настроить, когда мы собираемся прокручивать вниз.
  • Мы включили div с классом .header-fill. Мы будем использовать это, чтобы разместить некоторое пространство между верхней частью браузера и секцией содержимого, поскольку наш заголовок будет исправлен и имеет более высокий индекс z, а затем остальные элементы на странице.

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

Затем, мы собираемся написать HTML для нашей верхней панели. Нам нужна зона заголовка для нашего логотипа и раздел с <ul>  для хранения наших пунктов меню. Взгляните на следующий HTML:


1
<!-- TOPBAR SECTION -->
2
 <nav class="top-bar important-class" data-topbar>
3
 		
4
     <!-- TITLE AREA & LOGO -->
5
 	<ul class="title-area">
6
 		<li class="name">
7
 			<img src="img/Acme_Colour.png" alt="" id="logo-image">
8
 		</li>
9
 		<li class="toggle-topbar menu-icon"><a href="#"><span>menu</span></a></li>
10
 	</ul> <!-- END TITLE AREA & LOGO -->
11
 
12
     <!-- MENU ITEMS -->
13
 	<section class="top-bar-section">
14
 		<ul class="right">
15
 			<li class="active"><a href="index.php">Home</a></li>
16
 			<li><a href="blog.php">Blog</a></li>
17
 			<li><a href="#">About us</a></li>
18
 			<li><a href="#">Portfolio</a></li>
19
 			<li class="has-dropdown">
20
 				<a href="#">Services</a>
21
 				<ul class="dropdown">
22
 					<li><a href="#">Service #1</a></li>
23
 					<li><a href="#">Service #2</a></li>
24
 					<li><a href="#">Service #3</a></li>
25
 				</ul>
26
 			</li>
27
 			<li><a href="#">Contact</a></li>
28
 		</ul>
29
 	</section> <!-- END MENU ITEMS -->
30
 </nav> <!-- END TOPBAR SECTION -->

Мы добавили <ul>   title-area класса, в которой мы сохраняем наш логотип. Затем у нас есть <section> класс класса top-bar и <ul> с классом .right, содержащий все наши элементы списка. Наш образ имеет идентификатор logo-image, который нам также понадобится в нашем jQuery позже в этом уроке.

Шаг 3: Теперешние результаты

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

Настройка Sass

Чтобы получить желаемые результаты, нам понадобится базовый стиль для наших разделов, особенно заголовок и раздел Top Bar. Мы собираемся использовать Sass , чтобы это получилось.

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

Для начала, мы собираемся дать всем нашим разделам некоторый базовый стиль. Взгляните на Sass ниже:

1
$primary-color: #ef4523;
2
 
3
 /*

4
    HEADER SECTION

5
    ========================================================================== */
6
 .header-section {
7
     -webkit-box-shadow: 0 0 5px 0 rgba(0,0,0,0.4);
8
 	box-shadow: 0 0 5px 0 rgba(0,0,0,0.4);
9
 	position: fixed;
10
 	z-index: 999;
11
 	min-width: 100%;
12
 }
13
 
14
 .contain-to-grid {
15
 	background-color: rgba(255, 255, 255, 0.97);
16
 }
17
 
18
 // FILL USED FOR HEADER
19
 .header-fill {
20
 	background: #fff;
21
 	height: 135px;
22
 	.tablet-mobile-logo img {
23
 		padding-top: 30px;
24
 	}
25
 }
26
 
27
 // USED FOR JQUERY ACTION
28
 .padding-on-my-header {
29
 	padding: 17px 0.9375rem 62px 0.9375rem;
30
 	ul.title-area img {
31
 		margin: -5px 0 0 0;
32
 	}
33
 }
34
 
35
 .full-width {
36
 	min-width: 100%;
37
 }
38
 
39
 p {
40
 	line-height: 3rem;
41
 	padding-bottom: 30px;
42
 }
43
 
44
 
45
 /*

46
    CONTENT SECTION

47
    ========================================================================== */
48
 
49
 
50
 .content-section {
51
 	.main-content {
52
 		margin-top: 35px;
53
 	}
54
 }
55
 
56
 
57
 /*

58
    FOOTER SECTION

59
    ========================================================================== */
60
 
61
 .footer-section {
62
 	background: #333;
63
 	min-height: 100px;
64
 	p {
65
 		color: #fff;
66
 		margin-top: 50px;
67
 	}
68
 }

Здесь мы используем переменную основного цвета, которую мы собираемся использовать для некоторых стилей Top Bar. Наш заголовок имеет приятную тонкую тень, поэтому на самом деле выглядит так, будто он плавает над остальной частью контента. Установив свое положение на фиксированное и сделав z-index: 999, мы следим за тем, чтобы навигационная панель попадала в верхнюю часть браузера, когда мы прокручиваем вниз и он остается выше всех остальных элементов на странице.

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

Шаг 2: Стиль верхней панели

Теперь мы добавим стиль, чтобы придать нашей верхней панели приятный, гладкий вид. Вы также можете настроить некоторые параметры верхней панели в файле _settings.scss, но я покажу вам, как это сделать, используя наши собственные переопределения. Sass ниже объясняет, что и где происходит:

1
/*

2
    TOPBAR NAVGATION

3
    ========================================================================== */
4
 .top-bar
5
 {
6
     background: none;
7
 	padding: 45px 0.9375rem 90px 0.9375rem;
8
 	transition: all 0.5s ease 0.1s;
9
 	// LOGO ADJUSTMENT
10
 	ul.title-area img {
11
 		margin: -10px 0 0 0;
12
 	}
13
 	.top-bar-section ul {
14
 		background: none;
15
 		// MENU ITEM STYLES
16
 		li a:not(.button), li.active a:not(.button) {
17
 			background: none;
18
 			line-height: 30px;
19
 			font-size: 12px;
20
 			padding: 0;
21
 			margin: 5px 0 0 0;
22
 			text-transform: uppercase;
23
 		}
24
 		// MENU ITEM HOVERS
25
 		li a:not(.button):hover {
26
 			background: none;
27
 			border-bottom: 2px solid $primary-color;
28
 			color: #222;
29
 		}
30
 		// MENU ITEM ACTIVE
31
 		li.active a:not(.button) {
32
 			border-bottom: 2px solid $primary-color;
33
 			color: #222;
34
 			&:hover {
35
 				background: none;
36
 			}
37
 		}
38
 		li {
39
 			margin-left: 30px;
40
 			a {
41
 				color: #888;
42
 			}
43
 		}
44
 	}
45
 	// DROPDOWN MENU
46
 	.top-bar-section ul li:hover:not(.has-form) > a {
47
 		color: #333;
48
 	}
49
 	.top-bar-section li ul.dropdown {
50
 		background: #fff;
51
 		border: 1px solid #ddd;
52
 		color: #888;
53
 		li {
54
 			border-bottom: 1px solid #ddd;
55
 			margin: 0;
56
 			padding: 5px 15px 5px 15px;
57
 		}
58
 	}
59
 	.top-bar-section li ul.dropdown li a:not(.button):hover, .top-bar-section li ul.dropdown li a:not(.button) {
60
 		background: none;
61
 		color: #222;
62
 		border-bottom: none;
63
 		padding: 20px -4px 40px 45px;
64
 	}
65
 	.top-bar-section ul.dropdown li:hover:not(.has-form) > a:not(.button) {
66
 		background: none;
67
 		color: #222;
68
 	}
69
 	// DROPDOWN ARROW
70
 	.has-dropdown > a:after {
71
 	    border-color: rgba(0, 0, 0, 0.5) transparent transparent;
72
 	    margin-top: -5px;
73
 	}
74
 }

Примечание: Мы собираемся переместить заголовок .padding-on-my-header класс ниже правил верхней панели. Это необходимо, чтобы отступы перекрывали верхнюю панель.

Мы добавили некоторые дополнения в нашу верхнюю панель, и установили переход 0,5 с, легкость 0.1s. Это обеспечит плавный эффект перехода, когда начнется наш jQuery. Фон установлен на none, так что наш заголовок имеет слегка прозрачный цвет, который мы предоставили нашему .contain-to-grid класс. Остальное - это некоторый базовый стиль для пунктов меню верхней панели, выпадающих меню, зависаний и активных состояний. Ничего не преувеличено, но оно дало нам чистый результат, добавив пропуски и пробелы.

Шаг 3: Теперешний результат

Давайте посмотрим, что у нас есть. Безусловно, начинает как-то выглядеть! Тем не менее, наше меню по-прежнему немного велико, когда мы прокручиваем страницу вниз. Вот где наш .padding-on-my-header шаги класса.

jQuery для эффекта

Давайте используем немного магии jQuery, чтобы добавить заголовок .padding-on-my-header класса на прокрутке и изменим логотип на меньший размер.

Шаг 1. Создание нашего init.js

Мы собираемся создать файл init.js для размещения нашего кода jQuery. Поместите его в папку / js и включите следующую строку внизу индексационного файла, перед тегом закрывающего тега, чтобы включить скрипт:

1
        <!-- JAVASCRIPTS -->
2
     	<script src="bower_components/jquery/dist/jquery.min.js"></script>
3
 		<script src="bower_components/foundation/js/foundation.min.js"></script>
4
 		<script src="js/app.js"></script>
5
         <!-- OUR JQUERY MAGIC -->
6
 		<script src="js/init.js"></script>
7
 	</body>
8
 </html>

Наш init.js будет содержать следующее:

1
jQuery(window).scroll(function() {
2
     if (scroll >= 50) {
3
         $('#logo-image').attr('src', 'img/Acme_Monogram_Colour.png')
4
         $(".important-class").addClass("padding-on-my-header");
5
     }
6
     if (scroll < 50) {
7
     	$(".important-class").removeClass("padding-on-my-header");
8
     	$('#logo-image').attr('src', 'img/Acme_Colour.png')
9
     }
10
 });

Давайте посмотрим, что на самом деле происходит здесь. Когда пользователь прокручивается вниз, мы выполняем следующую функцию: если пользователь прокручивает более 50 пикселей, мы делаем верхнюю панель меньшей и вставляем логотип меньшего размера:

  • Мы находим наш логотип и заменяем источник изображения нашим меньшим логотипом.
  • Затем мы ищем наш .important-class и добавляем к нему еще один класс: .padding-on-my-header

Когда мы вернемся назад и прокрутимся ниже 50 пикселей, мы сделаем обратное и удалим класс заполнения, вернув логотип большого ol'.

Шаг 2: Проверка результатов

Перейдите и вернитесь в браузер. Обновите страницу и попробуйте прокрутить вниз. Если все пойдет так, как планировалось, вы должны увидеть, как верхняя панель сокращается с плавным переходом, а большой логотип заменяется меньшим. Все идет очень хорошо. Но когда мы изменим размер нашего браузера, вы увидите, что он не совсем такой как нам нужно. Давайте позаботимся об этом!

Медиа-запросы для оптимизации мобильных устройств

Мы будем создавать медиа-запрос для устройств с разрешением 1024 пикселя и меньше. Чтобы это было правильно, нам нужно изменить небольшую точку остановки Foundation. Как вы говорите? Ну, это просто! Мы просто собираемся нырнуть в наш _settings.scss и искать следующую настройку:

1
// Media Query Ranges
2
 $small-range: (0em, 64em);
3
 $medium-range: (64em, 64em);
4
 $large-range: (64.063em, 90em);
5
 $xlarge-range: (90.063em, 120em);
6
 $xxlarge-range: (120.063em, 99999999em);

Как вы можете видеть, мы переместили малый диапазон от 0em-40em до 0em-64em, который вычисляет до 1024px; Наш средний диапазон теперь начинается с 64em. Сохраните настройки, чтобы изменения вступили в силу, и давайте перейдем к нашему медиа-запросу!

Шаг 1. Добавление медиа-запросов

Наша верхняя панель на более мелком устройстве не должна быть такой большой. Мы немного уменьшим ее и изменим наше меню. Мы также будем использовать гораздо меньшую заливку заголовка. Давайте посмотрим, что мы здесь сделали:

1
@media only screen and (max-width: 1024px) {
2
 
3
     .top-bar {
4
 		margin-top: 0;
5
 		padding: 0;
6
 		float: none;
7
 		// MENU BUTTON AND HAMBURGER ICON
8
 		.toggle-topbar.menu-icon a {
9
 			color: #222;
10
 			&:after {
11
     			box-shadow: 0 10px 0 1px #222, 0 16px 0 1px #222, 0 22px 0 1px #222;
12
     		}
13
 		}
14
 		// LOGO
15
 		ul.title-area img {
16
 			margin: -2px 0 0;
17
 			width: 145px;
18
 		}
19
 		.top-bar-section {
20
 			ul {
21
 				background: #333;
22
 				li {
23
 					margin-left: 0;
24
 				}
25
 				li > a {
26
 					background: $primary-color;
27
 					border-radius: 0;
28
 					font-size: 0.9rem;
29
 				}
30
 				// NORMAL BUTTONS
31
 				li:not(.has-form) a:not(.button) {
32
 					background: none;
33
 					color: #fff;
34
 					padding: 10px 15px;
35
 					margin-top: 0;
36
 					&:hover {
37
 						background: $primary-color;
38
 						color: #fff;
39
 						margin-top: 0;
40
 					}
41
 				}
42
 				// ACTIVE BUTTON
43
 				li.active:not(.has-form) a:not(.button) {
44
 					background: $primary-color;
45
 					color: #fff;
46
 					padding: 10px 15px;
47
 					margin-top: 0;
48
 					&:hover {
49
 						background: lighten($primary-color, 5%);
50
 						margin-top: 0;
51
 					}
52
 				}
53
 			}
54
 		}
55
 	}
56
 	// SMALLER IMAGE
57
 	.top-bar.padding-on-my-header ul.title-area img {
58
 		margin: 5px 13px 0;
59
 		width: 35px;
60
 	}
61
 	// EXPANDED TOPBAR MENU
62
 	.top-bar.expanded {
63
 		margin-top: 0;
64
 		padding: 0;
65
 		float: none;
66
 		.toggle-topbar.menu-icon a {
67
 			color: #fff;
68
 			&:after {
69
     			box-shadow: 0 10px 0 1px #fff, 0 16px 0 1px #fff, 0 22px 0 1px #fff;
70
     		}
71
 		}
72
 	}
73
 
74
 	// SMALLER HEADER
75
 	.header-fill {
76
 		height: 40px;
77
 	}
78
 
79
 }

Давайте посмотрим, что мы здесь сделали:

  • Мы удалили все дополнения и поля на верхней панели.
  • Мы указали текст меню, а значок гамбургера - серый цвет, вместо белого цвета по умолчанию, поэтому он отображается на нашем белом верхнем баре.
  • Мы установили наш логотип большего размера, чтобы поместиться в верхней панели.
  • В top-bar-section мы разрабатываем наши ответные пункты меню, гибкость и активные состояния.
  • Мы также изменяем размер и размещаем логотип меньшего размера.
  • Мы удалили некоторые дополнения и поля в нашем расширенном гибком меню.
  • Наконец, мы сделали наш .header-fill меньше, так что он равен высоте нашей верхней панели.

Шаг 2: Наслаждайтесь итоговыми результатами!

Когда мы вернемся к нашему браузеру и изменим его размер, мы можем теперь увидеть, что наша гибкая навигация в полном объеме. Прокрутите вниз и посмотрите, как изображение логотипа все еще меняется. Нажмите на значок меню, чтобы увидеть расширенную версию нашей гибкой навигации.

Заключение

С некоторыми масками Sass и jQuery нам удалось превратить мощную базовую верхнюю панель из ZURB's 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.