Вертикальная фиксированная навигация на jQuery

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

 

ДЕМО
ИСХОДНИКИ

 

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

 

Создание структуры

Мы завершили навигацию в элементе <nav> и создали раздел для каждого элемента навигации. Мы добавили навигационный trigger для доступа к навигации на сенсорных устройствах.

<a class="cd-nav-trigger cd-img-replace">Open navigation</a>
<nav id="cd-vertical-nav" >
<ul>
<li>
<a href="#section1" data-number="1">
<span class="cd-dot"></span>
<span class="cd-label">Item 1</span>
</a>
</li>
<!-- other navigation items here-->
</ul>
</nav>

<section id="section1" class="cd-section">
<!-- content here -->
</section>

<section id="section2" class="cd-section">
<!-- content here -->
</section>

<!-- other sections here -->

 

Добавление стиля

Мы используем классы Modernizr .touch и .no-touch для обнаружения устройств touch и no-touch и доставляем 2 пользовательских навигации. Вот почему, если вы измените размер браузера, чтобы протестировать фрагмент, вы все равно получите тот же эффект с точками. Но если вы протестируете демо на сенсорном устройстве, вы увидите следующее:

На устройствах без касания мы спрятали «триггер» навигации и установили position:fixed  в элементе <nav>.

По умолчанию мы назначили масштабирующее преобразование для элементов навигации (как точек, так и меток) и масштабировали их при наведении.

.no-touch #cd-vertical-nav {
	/*fix the navigation*/
  	position: fixed;
  	right: 40px;
  	top: 50%;
  	bottom: auto;
  	transform: translateY(-50%);
}
 
.no-touch #cd-vertical-nav a span {
  	float: right;
  	/*scale down navigation dots and labels*/
  	transform: scale(0.6);
}
 
.no-touch #cd-vertical-nav .cd-dot {
  	transform-origin: 50% 50%;
}
 
.no-touch #cd-vertical-nav .cd-label {
  	transform-origin: 100% 50%;
}
 
.no-touch #vertical-nav a:hover span {
 	/*scale up navigation dots and labels*/
  	transform: scale(1);
}
 
.no-touch #cd-vertical-nav a:hover .cd-label {
	/*show labels*/
 	opacity: 1;
}

На сенсорных устройствах мы устанавливаем положение: исправлено для .cd-nav-trigger и <nav> и помещаем их в нижнем правом углу. Таким образом, он не должен конфликтовать с дополнительной навигацией, если ваш сайт требует его.

Когда пользователь нажимает на элемент .cd-nav-trigger, мы предоставляем класс .open навигации для изменения значения шкалы CSS3 от 0 до 1 с переходом CSS3 для достижения плавной анимации.

.touch #cd-vertical-nav {
  position: fixed;
  z-index: 1;
  right: 5%;
  bottom: 30px;
  width: 90%;
  max-width: 400px;
  max-height: 90%;
  transform: scale(0);
  transition-property: transform;
  transition-duration: 0.2s;
}
.touch #cd-vertical-nav.open {
  transform: scale(1);
}

 

Обработка событий

Когда пользователь прокручивает разделы, функция updateNavigation () оценивает, какой раздел просматривается в данный момент, и присваивает выбранному классу соответствующий элемент навигации (на основе атрибута номера данных элементов навигации).

 

Вот и всё!


🔖 Выбор по тегам ×

Top