Главная / Блог технологий продвижения и разработки сайтов / Вертикальное меню с fade-эффектом

Сегодня, дорогие дети, я расскажу вам сказку о том, как сделать вертикальное многоуровневое меню с fade-эффектом. Для справки, fade-эффект — это плавное изменение цвета. Получается красиво. Скрипты и стили весят мало, дополнительные библиотеки, вроде JQuery или Prototype не требуются.

Собственно идея и скрипт fade-эффекта заимствованы с сайта Игоря Цыгырлаша, а коды самой менюхи настолько распространены в интернетах, что мимо просто невозможно пройти. Готовый скрипт меню с fade-эффектом в архиве. UPD. Вот простое вертикальное меню без fade. Ниже поясню основные моменты внедрения.

Во-первых, то что в шапке:

<link rel="stylesheet" type="text/css" href="styles/fademenu.css" />

<script type="text/javascript" src="jscripts/fade.js"></script>

<script type="text/javascript">
fade.addRule('fontfade',"#cc945e","#fff","color", 40, 1);
fade.addRule('bgrdfade',"#fff","#cc945e","background-color", 40, 1);
</script>

<!--[if gte IE 5.5000]>
<script src="jscripts/nav.js" type="text/JavaScript"></script>
<![endif]-->

Пояснение аргуметов функции addRule из строки fade.addRule('fontfade',"#cc945e","#fff","color", 40, 1);:

  • fontfade - название конкретного правила изменения цвета, задаётся верстальщиком;
  • #cc945e - начальный цвет;
  • #fff - конечный цвет цвет;
  • color - CSS-свойство, для которого применяется правило изменения цвета;
  • 40 - за сколько «кадров» начальный цвет перейдёт в конечный;
  • 1 - сколько милисекунд будет отображаться каждый «кадр»;

Честно говоря, в разных браузерах скрипт работает с разной скоростью, в независимости от того, сколько милисекунд задано в последнем аргументе. Медленнее всех получается в IE, ну, кто бы сомневался, шустрее всех рендеринг выдаёт Google Chrome.

Непосредственно код менюхи, приведу только первый пункт и на нём разъясню основные моменты:

<ul id="nav">
<li><a href="#" id="item1" onmouseover="fade(this.id, 'fontfade,bgrdfade')" onmouseout="fade.back(this.id, 'fontfade,bgrdfade')">Главная</a></li>
</ul>

Идентификатор nav у элемента <ul> назван так не случайно - на него заточен скрипт nav.js - это «костыли» для 6-го эксплорера. В принципе, можно поменять название в любое время, одновременно сменив его в скрипте. Скрипт присваивает элементам списка класс iehover. За счёт чего ИЕ раскрывает следующий уровень меню. Каждому элементу, к которому будут применяться правила перетекания цвета, присваивается уникальный id с порядковым номером, item1, item2 и т.д. Можно по-другому, главное — уникальность. Первый аргумент функции fade — идентификатор, к элементу которого применятся правила, указанные во втором аргументе. Решение на редкость изящное. Более понятное и простое объяснение в статье автора «Javascript fading — плавное изменение цветов».