Ракетная панель навигации

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

 

Принцип работы

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

 

Чем она полезна?

Какая польза от такой панели на сайте? Во-первых, она сохраняет время. Если кто-то читает большую запись в блоге и в середине материала решает  переместиться в другой раздел, то использование Ракетной панели поможет сохранить время, которое тратится на прокручивание страницы вверх, чтобы найти соответствующую ссылку в меню. Во-вторых, такая постоянная панель дает пользователю отличную возможность исследовать ваш сайт - например, можно поместить поле поиска по сайту, что может подтолкнуть случайного посетителя к просмотру других материалов на вашем сайте (если содержание его заинтересовало).

Если вы следите за развитием идей веб дизайна, то наверняка знаете, что такая концепция навигации не нова – подобные панели выполнялись с использованием фреймов или  фиксированного позиционирования элементов с помощью CSS. Однако с помощью Ракетной панели вы сможете использовать многоуровневое выпадающее меню или даже навигацию под управлением jQuery, и при этом не нужно будет беспокоиться об обрезке элементов или  свойстве z-index.

 

Как сделана Ракетная панель?

Панель состоит из двух основных компонентов. Первый - код jQuery, который управляет панелью, добавляя классы и атрибуты, которые "отсоединяют" панель при прокрутке страницы вниз. Второй (который является опциональным) - кнопки CSS3, которые присутствуют на панели. Сначала мы разберем код jQuery, а затем поговорим о CSS3.

Но прежде всего, определим разметку HTML для нашей панели. Это простой контейнер div со стандартным списком, который содержит элементы button для пунктов меню.

	<div  id="floatingbar">
		 <ul>
		  <li><img border=0 src="/images/rocketbar.png"></img></li>
		   <li><a href="/../version2/demo_2.html"><button>Демо 2</button></a></li>
		   <li><a href="/"><button class="default">О нас</button></a></li>
		   <li><a href="#service"><button class="default">Услуги</button></a></li>
		   <li><a href="/"><button class="default">Цены</button></a></li>
		   <li><a href="/"><button class="default">Блог</button></a></li>
		   <li><a href="/"><button class="default">Контакт</button></a></li>
		   <li><a href="javascript:#"><button title="Scroll" id="dirbutton" class="default">
		      <img border=0 src="/images/bottomarrow.png"></img>
		   </button></a></li>
		 </ul>
	</div>

 

JavaScript – Делаем $(window).scroll()

С помощью функции $(window).scroll() возможно выполнять действия на странице, когда пользователь прокручивает ее вверх или вниз. В Ракетной панели используются две точки на текущем окне – первая является верхом страницы по отношению к положению панели ($top1), а вторая - середина текущего окна ($mid1). Когда пользователь прокручивает страницу ниже $top1, мы добавляем класс floater к элементам панели, "отсоединяя" ее. Здесь используется классическое позиционирование CSS фиксированных элементов.

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

var $top1= $('#floatingbar').offset().top + 20; //добавляем смещение для Webkit
var $mid1 =  Math.floor($(window).height() / 2);
$(window).scroll(function()
{
		if ($(window).scrollTop()>$top1)
		{
		 $('#floatingbar').addClass('floater');
		}
		else
		{
		 $('#floatingbar').removeClass('floater');
		 }
		 if($(window).scrollTop() > $mid1)
		  {
		     $('#dirbutton').
                                   find('img').
                                   attr('src','images/toparrow.png');
			 $('#dirbutton').data('mode','scrolldown');
		     $('#dirbutton').show();
		  }else
		  {
			 $('#dirbutton').
                                        find('img').
                                        attr('src','images/bottomarrow.png');
			 $('#dirbutton').data('mode','scrollup');
		  }
});

 

JavaScript - Анимация прокрутки вниз и вверх

Одной из особенностей Ракетной панели является наличие кнопки, которая позволяет вернуться наверх страницы в один клик вне зависимости от положения на странице. Так как для нее требуется изображение, которое изменяется при прокрутке в середине страницы, будем использовать простые функции jQuery предварительной загрузки изображений:

$.preloadImages = function()
{
       for(var i = 0; i").attr("src", arguments[i]);
       }
}
$.preloadImages("images/toparrow.png","images/bottomarrow.png");
$('#dirbutton').click(function()
{
   $mode = $(this).data('mode');
   switch($mode)
   {
     case 'scrolldown':
	     $('html, body').animate({scrollTop:0}, 'slow');
		 return false;
		 break;
	 case 'scrollup':
	    $scrollpos = $('body').outerHeight();
	    $('html, body').animate({scrollTop:$scrollpos}, 'slow');
		return false;
		break;
   }
});

 

Кнопки CSS3 (полный код доступен в файле style.css в исходниках)

CSS3 позволяет сделать отличные кнопки без использования изображений. Нужно использовать префиксы для различных браузеров, чтобы приложение выглядело одинаково в разных браузерах.

Для кнопок используются градиенты, тени, скругленные углы и тени для текста.

button {
	position: relative;
	margin: 0 .5em .5em .5em;
	padding: 0.5em 1.5em;
	font-size: 14px;
	font-weight: bold;
	font-family:Arial;
	color: #4f4f4f;
	text-shadow: 0 1px 1px #fff;
	background: #ddd;
	background: -webkit-gradient(linear, left top, left bottom, from(#ededed), to(#c4c4c4));
	background: -moz-linear-gradient(top, #ededed, #c4c4c4);
	border: 1px solid #acacac;
	border-top-color: #bdbdbd;
	letter-spacing:-1px;
	border-bottom-color: #949494;
	border-radius: .214em;
	-webkit-border-radius: .214em;
	-moz-border-radius: .214em;
	transition: all .2s ease-in-out;
	-webkit-transition: all .2s ease-in-out;
	-moz-transition: all .2s ease-in-out;
	-o-transition: all .2s ease-in-out;
	box-shadow: inset 0 1px 0 #fff;
    	-webkit-box-shadow: inset 0 1px 0 #fff;
    	-moz-box-shadow: inset 0 1px 0 #fff;
    	-o-box-shadow: inset 0 1px 0 #fff;
	cursor: pointer;
	}
	button:hover,
	button:focus {
		box-shadow: 0 0 7px rgba(0,0,0,0.4), inset 0 1px 0 #fff;
    		-webkit-box-shadow: 0 0 7px rgba(0,0,0,0.4), inset 0 1px 0 #fff;
    		-moz-box-shadow: 0 0 7px rgba(0,0,0,0.4), inset 0 1px 0 #fff;
    		-o-box-shadow: 0 0 7px rgba(0,0,0,0.4), inset 0 1px 0 #fff;
		}
	button:active {
		background: #ccc;
		background: -webkit-gradient(linear, left top, left bottom, from(#c3c3c3), to(#ebebeb));
		background: -moz-linear-gradient(top, #c3c3c3, #ebebeb);
		border-color: #a6a6a6;
		border-top-color: #939393;
		border-bottom-color: #bcbcbc;
		box-shadow: inset 0 -1px 0 #fff;
    		-webkit-box-shadow: inset 0 -1px 0 #fff;
    		-moz-box-shadow: inset 0 -1px 0 #fff;
    		-o-box-shadow: inset 0 -1px 0 #fff;
		}

 

Готово!

Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/SsP1NBktO3M/lessons.php

Читать комменты и комментировать

Добавить комментарий / отзыв



Защитный код
Обновить

Ракетная панель навигации | | 2012-06-19 12:08:19 | | Статьи Web-мастеру | | Каждый день на любом сайте мы совершаем одну и ту же операцию - прокручиваем страницу вниз. Если мы читаем запись в блоге, просматриваем описание продукта или листаем список результатов поиска ... в | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: