Відмінне багаторівневе меню jQuery

88

Інтернет майданчики все більше розширюються і зараз вже мало кого цікавлять простенькі менюшки. Збільшується кількість тем і рубрик, а разом з цим постає питання про спрощення навігації по сторінках і розділів сайтів. Благо зараз стали широко застосовуватися різні техніки створення багаторівневих меню навігації з допомогою властивостей CSS3 і jQuery.

Раніше я вже описував, деякі способи створення навігаційних меню, наприклад Створення випадного меню з допомогою CSS або ж Відмінне горизонтальне меню з CSS і jQuery. Коротше пошаривши по блогу знайдеться багато цікавих рішень по цій темі.

Сьогодні хочу запропонувати вашій увазі ще одне цікаве рішення в плані створення меню навігації з використанням jQuery. У нашому випадку меню буде складатися з трьох рівнів, що значно розширить його функціональність. Крос-браузерность кінцевого продукту, JQuery анімація і градієнт CSS3 робить навігаційний блок ще більш привабливим.

ДемоСкачать

Приклад подивилися, тепер поїхали!!!

HTML

Діяти будемо по накатаній, тобто необхідно правильно розмітити наше меню безпосередньо на сторінці HTML. Там де у вас буде навігаційний блок, прописуєте ось такий простенький код:

<ul id="nav">
<li><a href="#">Додому</a></li>
<li><a href="#">Меню 1</a>
<ul>
<li><a href="#">Пункт 1</a></li>
<li><a href="#">Пункт 2</a></li>
<li><a href="#">Пункт меню 3</a>
<ul>
<li><a href="#">Підпункт 1</a></li>
<li><a href="#">Підпункт 2</a></li>
<li><a href="#">Підпункт 3</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Меню 2</a></li>
<li><a href="#">Меню 3</a>
<ul>
<li><a href="#">Пункт 1</a></li>
<li><a href="#">Пункт 2</a>
<ul>
<li><a href="#">Підпункт 1</a></li>
<li><a href="#">Підпункт 2</a></li>
<li><a href="#">Підпункт 3</a></li>
</ul>
</li>
<li><a href="#">Пункт меню 3</a></li>
</ul>
</li>
<li><a href="#">Меню 4</a></li>
</ul>

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

CSS

У файлі стилів .css, а він у вас повинен бути за визначенням, наводимо блиск нашому меню, виставляємо кольорову гаму, розмір, ну і звичайно надаємо ефект градієнта всьому блоку навігації.

/* MENU */
#nav {
background: #e5e5e5;
float: left;
margin: 0; padding: 0;
border: 1px solid black;
border-bottom: none;
}
#nav li a, #nav li {
float: left;
}
#nav li {
list-style: none;
position: relative;
}
#nav li a {
padding: 1em 2em;
text-decoration: none;
color: white;
background: #292929;
background: -moz-linear-gradient(top, black, #3c3c3c 1px, #292929 25px);
background: -webkit-gradient(linear, left, top, left 25, from(black), color-stop(4%, #3c3c3c), to(#292929));
border-right: 1px solid #3c3c3c;
border-left: 1px solid #292929;
border-bottom: 1px solid #232323;
border-top: 1px solid #545454;
}
#nav li a:hover {
background: #2a0d65;
background: -moz-linear-gradient(top, #11032e, #2a0d65);
background: -webkit-gradient(linear, left, top, left bottom, from(#11032e), to(#2a0d65));
}
/* Submenu */
.hasChildren {
position: absolute;
width: 5px; height: 5px;
background: black;
right : 0;
bottom: 0;
}
#nav ul li {
display: none;
position: absolute;
left: 0;
top: 100%;
padding: 0; margin: 0;
}
#nav li:hover > ul {
display: block;
}
#nav li ul li, #nav li ul li a {
float: none;
}
#nav li ul li {
_display: inline; /* for IE6 */
}
#nav li ul li a {
width: 150px;
display: block;
}
/* SUBSUB Menu */
#nav li ul ul li {
display: none;
}
#nav li ul li:hover ul {
left: 100%;
top: 0;
}
#nav ul li

/* MENU */
#nav {
background: #e5e5e5;
float: left;
margin: 0; padding: 0;
border: 1px solid black;
border-bottom: none;
}#nav li a, #nav li {
float: left;
}#nav li {
list-style: none;
position: relative;
}#nav li a {
padding: 1em 2em;
text-decoration: none;
color: white;
background: #292929;
background: -moz-linear-gradient(top, black, #3c3c3c 1px, #292929 25px);
background: -webkit-gradient(linear, left, top, left 25, from(black), color-stop(4%, #3c3c3c), to(#292929));
border-right: 1px solid #3c3c3c;
border-left: 1px solid #292929;
border-bottom: 1px solid #232323;
border-top: 1px solid #545454;
}#nav li a:hover {
background: #2a0d65;
background: -moz-linear-gradient(top, #11032e, #2a0d65);
background: -webkit-gradient(linear, left, top, left bottom, from(#11032e), to(#2a0d65));
}/* Submenu */.hasChildren {
position: absolute;
width: 5px; height: 5px;
background: black;
right : 0;
bottom: 0;
}#nav ul li {
display: none;
position: absolute;
left: 0;
top: 100%;
padding: 0; margin: 0;
}#nav li:hover > ul {
display: block;
}#nav li ul li, #nav li ul li a {
float: none;
}#nav li ul li {
_display: inline; /* for IE6 */
}#nav li ul li a {
width: 150px;
display: block;
}/* SUBSUB Menu */#nav li ul ul li {
display: none;
}#nav li ul li:hover ul {
left: 100%;
top: 0;
}#nav ul li

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

jQuery

В наступному кроці нашого дійства, нам необхідно анімувати пункти меню, для цього використовуємо зовсім небагато jQuery, скористаємося бібліотекою розміщеної на сторонньому сервісі, зокрема Гугл нам допоможе і javascript розташований в исходниках.
Щоб все запрацювало підключимо всю цю мутатень до нашого документу, хтось прописує на початку документа між тегами head і /head, а можна покласти і в кінці сторінки, перед тегом /body розмістити наступне:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript">
<script src="http://jquery-ui.googlecode.com/svn/tags/latest/ui/jquery.effects.core.js" type="text/javascript">
<script src="js/scripts.js" type="text/javascript">

Всі! Чудове багаторівневе меню навігації готове до роботи і безсумнівно буде радувати око відвідувачів Ваших майданчиків, це, звичайно, в тому випадку якщо все зробили правильно.

Завантажити

Джерело уроку: net.tutsplus.com
Переклад і адаптація: shurawi

Якщо раптом комусь, з якогось переляку, знадобляться оригінальні исходники в авторському виконанні, то можете їх завжди забрати тут: Тынц…