
До 2006 года было невозможно в течение нескольких секунд создавать интересные переходы, анимацию и другие веб эффекты. С выходом jQuery все изменилось, на текущий момент вы можете найти массу плагинов для jQuery для того, что бы создать красивое меню, анимацию для баннеров и многого другого.
Этим же целям служит мое руководство по созданию красивого выпадающего меню для сайта, то которое, может быть, вы ищите. В процессе написания руководства я не буду объяснять HTML и CSS, я предполагаю, что вы уже знаете эти технологии на достаточном уровне для нашего урока, в противном случае вы можете скопировать необходимый HTML и CSS код ниже.
Нарезка PSD
У нас есть бесплатный PSD файл с нарисованным меню, который мы будем использовать в данном руководстве (сам файл вы можете скачать в конце руководства). Ниже на картинке изображено как мы будем нарезать графику.

HTML структура:
В PSD файле вы видели пункты меню с строкой поиска с правого края, необходимый HTML код для всех этих элементов представлен ниже:
<div> <ul> <li><a href="#">Главная</a> <ul style="display: none;"> <li><a href="#">Подменю пункт 1</a></li> <li><a href="#">Подменю пункт 2</a></li> <li><a href="#">Подменю пункт 3</a></li> <li><a href="#">Подменю пункт 4</a></li> <li><a href="#">Подменю пункт 5</a></li> </ul> </li> <li><a href="#">Услуги</a> <ul style="display: none;"> <li><a href="#">Подменю пункт 1</a></li> <li><a href="#">Подменю пункт 2</a></li> <li><a href="#">Подменю пункт 3</a></li> <li><a href="#">Подменю пункт 4</a></li> <li><a href="#">Подменю пункт 5</a></li> </ul> </li> <li><a href="#">Продукция</a> <ul style="display: none;"> <li><a href="#">Подменю пункт 1</a></li> <li><a href="#">Подменю пункт 2</a></li> <li><a href="#">Подменю пункт 3</a></li> <li><a href="#">Подменю пункт 4</a></li> <li><a href="#">Подменю пункт 5</a></li> </ul> </li> <li><a href="#">Контакты</a> <ul style="display: none;"> <li><a href="#">Подменю пункт 1</a></li> <li><a href="#">Подменю пункт 2</a></li> <li><a href="#">Подменю пункт 3</a></li> <li><a href="#">Подменю пункт 4</a></li> <li><a href="#">Подменю пункт 5</a></li> </ul> </li> </ul> <div> <input name="search" type="text"> <input name="search" value="" type="submit"> </div> </div>
CSS
Ниже представлен CSS код для оформления меню.
.main-navigation {
width: 890px;
height: 44px;
border: 1px dashed #a2d2cf;
background: url(../images/nav-bg.jpg) left repeat-x;
top: 50%;
left: 50%;
margin: -22px 0 0 -445px;
position: absolute;
}
ul {
margin: 0px;
padding: 0px;
list-style: none;
}
li {
float: left;
font-size: 15px;
color: #FFFFFF;
height: 42px;
display: block;
position: relative;
}
li .hover {
color: #FFFFFF;
text-decoration: none;
position: absolute;
background: url(../images/hover-bg.png) top left no-repeat;
top: 0;
left: 0;
z-index: 0;
height: 44px;
display: none;
}
li a {
display: block;
color: #FFFFFF;
text-decoration: none;
padding: 14px 43px 13px 44px;
z-index: 1000;
position: relative;
}
.search {
float: right;
margin: 9px 26px 0 0;
padding: 0px;
}
.search-input {
font-family: LucidaGrande, Lucida Sans, Arial;
font-size: 12px;
color: #FFFFFF;
width: 117px;
height: 26px;
padding: 0 5px 0 10px;
padding: 5px 5px 0 10px \9; /* IE 7 and 8 */
border: 0;
outline: none;
background: url(../images/search-input-bg.png) top left no-repeat;
float: left;
}
.search-btn {
width: 37px;
height: 26px;
border: 0;
outline: none;
background: url(../images/search-btn.png) top left no-repeat;
float: left;
}
ul li ul {
width: 200px;
position: absolute;
display: none;
top: 44px;
padding: 1px 0 0 0;
}
ul li:hover ul {
display: block;
}
ul li ul li {
display: block;
padding: 10px 10px 10px 0;
width: 200px;
padding: 0px;
margin: 0px;
background: url(../images/nav-bg.jpg) left repeat-x;
position: relative;
}
ul li ul li a {
display: block;
color: #FFFFFF;
text-decoration: none;
padding: 14px 43px 13px 28px;
z-index: 1000;
position: relative;
}
jQuery
Основная часть урока начинается, тут я буду вас учить как шаг за шагом создать анимированное выпадающее меню на jQuery.
Шаг 1 — Перейдите в секцию head страницы и вставьте в следующий код:
<script type="text/javascript" src=" http://yandex.st/jquery/1.6.4/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
});
</script>
Первое что мы делаем в этом коде, это подключаем jQuery на нашу страницу с Yandex. И подписываемся на событие готовности документа, весь наш код для меню мы будем писать в обработчике события готовности документа.
Шаг 2 — В код обработчика готовности документа добавьте следующий код:
$("li").hover(function() {
/* эта функция будет вызываться при наступления события HOVER (наведении курсора на элемент) на любом li */
} , function() {
/* эта функция будет вызываться при наступлении события HOVER OUT (по кидание элемента курсором) на любом li */
});
Я думаю из комментариев к коду его назначение должно быть вам понятно, поэтому не будем заострять внимание на данном коде и идем далее.
Шаг 3 — Добавляем эффекты.
var itemwidth = $(this).width();
/* получаем ширину li */
$(this).prepend("<div class='hover'></div>");
/* вставляем пустой div в li перед тегом а */
$(this).find("div").fadeIn('10000').css({ 'width':itemwidth});
/* используем ширину li (itemwidth) для div */
$(this).find("ul").fadeIn('1000').slideDown('10000').css("display", "block");
Добавьте в функцию обработки события HOVER код представленный выше, после это наш общий код должен выглядеть примерно так:
$(document).ready(function () {
$("li").hover(function () {
/* эта функция будет вызываться при наступления события HOVER (наведении курсора на элемент) на любом li */
var itemwidth = $(this).width();
/* получаем ширину li */
$(this).prepend("<div class='hover'></div>");
/* вставляем пустой div в li перед тегом а */
$(this).find("div").fadeIn('10000').css({ 'width':itemwidth});
/* используем ширину li (itemwidth) для div */
$(this).find("ul").fadeIn('1000').slideDown('10000').css("display", "block");
}, function () {
/* эта функция будет вызываться при наступлении события HOVER OUT (по кидание элемента курсором) на любом li */
});
});
Далее мы будем работать над кодом для функции обработки события HOVER OUT, в ставьте в нее код представленный ниже:
$(this).find("div").slideUp('1000').fadeOut('1000');
/* применяем эффекты silde up и fade out для div */
$(this).find("div").remove();
/* удяляем div */
$(this).find("ul").fadeOut('1000');
/* применяем эффект fadе out к подменю */
Хорошо, на этом настройка эффектов для нашего меню закончена. Если вы теперь обновите страницу и протестируете меню вы увидите красивые эффекты при отображении подменю, а так же при наведении на пункт меню.
Шаг 4 — Анимации поля поиска
Для того что добавить анимацию к полю поиска вставьте код представленный ниже в обработчик события готовности документа.
$(".search-input").focus(function () {
$(this).animate({width:'180px'}, 500);
/* при получении фокуса элементом делаем анимаюцию с изменением размера для элемента */
});
$(".search-input").focusout(function () {
$(this).animate({width:'117px'}, 500);
/* при получении фокуса элементом делаем анимаюцию с изменением размера для элемента */
});
На этом ваше анимированное выпадающее меню и анимированное поле поиска на jQuery готовы.
Заключение
Существуют тысячи плагинов для jQuery для того что бы создать подобное меню, но цель этого руководства состоит в том, чтобы дать вам подробный пример по созданию выпадающего меню и кратко познакомить вас с тем как работает jQuery и как создавать анимацию с jQuery.
Я надеюсь, что вам понравилось меню.
Большое спасибо,долго ковырялся,писал свою менюшку,работала некорректно,а ваш способ подсказал мне,укак оказывается это по правильному делается,большон СПАСИБО!
все хорошо, только в IE fade работает коряво….