Анимированное меню с помощью CSS и jQuery
![]()
Как создать красивый эффект имитирующий поведение меню на флэш-сайтах?
Часть 1. Код — HTML
Тут все просто. Нужно создать ненумерованный список:
<ul id="topnav"> <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>
Часть 2. Оформление — CSS
Каждый элемент списка имеет свойство «overflow: hidden;». Поясняющая иллюстрация:
Обратите внимание — дублирующие тэги <span> на этом этапе отсутствуют. Мы добавим их позже с помощью нескольких строк JQuery.
Итак, CSS-код:
ul#topnav {
margin: 0;
padding: 0;
list-style: none;
float: left;
font-size: 1.1em;
}
ul#topnav li{
margin: 0;
padding: 0;
overflow: hidden;
float: left;
height:40px;
}
ul#topnav a, ul#topnav span {
padding: 10px 20px;
float: left;
text-decoration: none;
color: #fff;
background: url(files/a_bg.gif) repeat-x;
text-transform: uppercase;
clear: both;
width: 100%;
height: 20px;
line-height: 20px;
}
ul#topnav a{
color: #555;
background-position: left bottom;
}
ul#topnav span{
background-position: left top;
}
Часть 3. Анимация – jQuery
Подключаем файл с jQuery.
Вы можете загрузить файл с официального сайта jQuery, или подключить файл прямо с хостинга Google.
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
Как вы можете видеть ниже, мы дублируем тэг span, а затем поднимаем его на 40px.
$(document).ready(function() {
$("#topnav li").prepend("<span></span>"); // Вставляем пустой тэг span
$("#topnav li").each(function() { // Для каждого пункта списка...
var linkText = $(this).find("a").html(); // Находим текст внутри тэга <a>
$(this).find("span").show().html(linkText); // Добавляем текст в тэг <span>
});
$("#topnav li").hover(function() { // При наведении...
$(this).find("span").stop().animate({
marginTop: "-40" // Находим тэг <span> и поднимаем его на 40 пикселей
}, 250);
} , function() { //On hover out...
$(this).find("span").stop().animate({
marginTop: "0" // Возвращаем тэг <span> в исходное положение (0px)
}, 250);
});
});
Что должно получится в результате? — http://glume.ru/tutorials/1/
Оригинальная статья (англ.яз.): — http://www.sohtanaka.com/web-design/examples/fancy-navigation/

