Анимированное меню с помощью 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/

Метки: , , .

Нет комментариев »

Оставить комментарий