Здравствуйте, Уважаемые посетители Российской школы CSS. Сегодня, я расскажу Вам об одном из самых простых способов создания анимированного выпадающего меню с помощью библиотеки jQuery. Итак, начнём.... Сделаем меню из трёх уровней - само меню и 2 уровня выпадающих. Все необходимые скрипты будем прописывать внутри самого HTML файла. Создадим index.html и подключим необходимые стили и библиотеки:
Code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>
Российская школа CSS. Урок jQuery #3. Выпадающее меню
</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<script type="text/javascript" src="jquery.tools.min.js"></script>
Теперь перейдём к самому важному - созданию правил всплывания, а точнее выпадания нашего меню:
Code
<script type="text/javascript">
$(document).ready(function(){
$("ul.menu li a").mouseover(function() {
$(this).parent().find("ul.subnav").slideDown('fast').show();
$(this).parent().hover(function() {
}, function(){
$(this).parent().find("ul.subnav").slideUp('slow');
});
});
$("ul.menu li ul li a").mouseover(function() {
$(this).parent().find("ul.subnav2").slideDown('fast').show();
$(this).parent().hover(function() {
}, function(){
$(this).parent().find("ul.subnav2").slideUp('slow');
});
});
});
</script>
Как видно из кода скрипта, мы "привязываем" его к объектам ul с классом menu.
Code
$("ul.menu li a").mouseover(function() {
Маркированный список нашего выпадающего меню должен иметь класс subnav,
Code
$(this).parent().find("ul.subnav").slideDown('fast').show();
$(this).parent().hover(function() {
}, function(){
$(this).parent().find("ul.subnav").slideUp('slow');
а список меню 3-го уровня должен иметь класс subnav2. Такой подход позволяет создавать неограниченное количество уровней выпадающего меню. Также мы "попросили" скрипт раскрывать меню быстро, а собирать - медленно (slide). Теперь пропишем в html само меню, сохраним и закроем index.html:
Code
</head>
<body>
<ul class="menu">
<li><a href="#">Главная</a></li>
<li>
<a href="#">Документация</a>
<ul class="subnav">
<li><a href="#">jQuery</a></li>
<li><a href="#">CSS</a></li>
<li><a href="#">PHP >></a>
<ul class="subnav2">
<li><a href="#">Иконки</a></li>
<li><a href="#">Шаблоны</a></li>
<li><a href="#">Скрипты</a></li>
<li><a href="#">Скрипты</a></li>
<li><a href="#">Фоны</a></li>
<li><a href="#">Другое...</a></li>
</ul>
</li>
<li><a href="#">AJAX</a></li>
<li><a href="#">Другое...</a></li>
</ul>
</li>
<li>
<a href="#">Скачать</a>
<ul class="subnav">
<li><a href="#">Иконки</a></li>
<li><a href="#">Шаблоны</a></li>
<li><a href="#">Скрипты</a></li>
<li><a href="#">Фоны</a></li>
<li><a href="#">Другое...</a></li>
</ul>
</li>
<li><a href="#">Форум</a></li>
<li><a href="#">Товары</a></li>
<li><a href="#">Блог</a></li>
<li><a href="#">О нас</a></li>
</ul>
</body>
</html>
Не забудьте, что библиотека jQuery и файл CSS должны находиться в той же папке, что и index.html (такие пути мы прописали в коде). Создадим файл стилей (style.css):
Стили для всего меню (первый уровень):
Code
ul.menu {
list-style:none;
padding:0;
margin: 0;
font:12px Arial;
}
Стили для пунктов меню первого уровня:
Code
ul.menu li {
float: left;
margin: 0;
padding: 0;
position: relative;
}
ul.menu li a{
padding: 12px 15px;
padding-bottom:11px;
color: #fff;
display: block;
text-decoration: none;
float: left;
font-weight:bold;
border-left: 1px solid #10577e;
border-right: 1px solid #4582a4;
background:#246d96;
}
ul.menu li a:hover{
background:#2b76a0;
}
Стили для выпадающего меню первого уровня:
Code
ul.menu li ul.subnav {
list-style: none;
position: absolute;
left: 0; top: 38px;
background:#246d96;
margin: 0; padding: 0;
display: none;
float: left;
width: 171px;
border: 1px solid #10577e;
z-index:1;
}
ul.menu li ul.subnav li{
margin: 0; padding: 0;
border-top: 1px solid #4582a4;
border-bottom: 1px solid #10577e;
clear: both;
width: 171px;
background:#246d96;
}
html ul.menu li ul.subnav li a {
float: left;
width: 130px;
border:0;
background:#246d96;
padding-top:7px;
padding-bottom:7px;
padding-left: 25px;
}
html ul.menu li ul.subnav li a:hover {
background:#2b76a0;
}
И наконец, стили для выпадающего меню третьего уровня:
Code
ul.menu li ul.subnav2 {
list-style: none;
position: absolute;
left: 150px; top: -2px;
background:#246d96;
margin: 0; padding: 0;
display: none;
float: left;
width: 171px;
border: 1px solid #10577e;
z-index:10;
}
Значения атрибутов left и top зависят от размеров пункта меню. Вот и всё. Можно сохранять стили и любоваться на результаты труда. Меню совместимо со всеми современными браузерами и его можно без проблем встроить практически в любой дизайн.
Надеюсь урок оказался полезным и понятным для Вас. Спасибо за внимание!
Автор урока: Григорий Загребельный, Российская школа CSS
Совместимость: Internet Explorer 6 - 8; Mozilla Firefox 1.xx - 3.xx Opera 7.хх - 10.xx.