Простое и эффектное выпадающее меню на jQuery и CSS3


Простое и эффектное выпадающее меню на jQuery и CSS3

4891
8 из 10
Проголосовало: 4






Очень часто в шаблонах можно встретить выпадающие навигационные элементы. Разработчики используют данный тип скрытых меню для вывода дополнительных скрытых ссылок, тематически связанных с основным пунктом. Можно найти примеры выскальзывающих панелей или различных меню в стиле аккордеона, которые реализуют такой принцип навигации.

Но в данном уроке мы построим простое выпадающее меню с использованием jQuery. Оно будет работать с помощью метода анимации для генерирования задержанных эффектов. Вместе с кодом JavaScript также применяются эффекты переходов CSS3. В результате получается заготовка для навигации сайта.

HTML

Код
<div id="w">
  <nav>
  <ul id="ddmenu">
  <li><a href="#">Главная</a></li>
  <li><a href="#">О нас</a>
  <ul>
  <li><a href="#">Миссия</a></li>
  <li><a href="#">Команда</a></li>
  <li><a href="#">История</a></li>
  </ul>
  </li>
  <li><a href="#">Продукты</a>
  <ul>
  <li><a href="#">Логитипы</a></li>
  <li><a href="#">Шаблоны</a></li>
  <li><a href="#">Иконки</a></li>
  <li><a href="#">Плагины jQuery</a></li>
  <li><a href="#">маркетинг Internet</a></li>
  </ul>
  </li>
  <li><a href="#">Интернационализация</a>
  <ul>
  <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>
  </ul>
  </nav>
  </div>
<script type="text/javascript">
$(document).ready(function(){
  $('a').on('click', function(e){
  e.preventDefault();
  });
   
  $('#ddmenu li').hover(function () {
  clearTimeout($.data(this,'timer'));
  $('ul',this).stop(true,true).slideDown(200);
  }, function () {
  $.data(this,'timer', setTimeout($.proxy(function() {
  $('ul',this).stop(true,true).slideUp(200);
  }, this), 100));
  });

});
</script>


CSS

Код
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 100%;
  font: inherit;
  vertical-align: baseline;
  outline: none;
  -webkit-font-smoothing: antialiased;
  -webkit-text-size-adjust: 100%;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
html { height: 101%; }
body { background: #eaeaea url('images/bg.png'); font-size: 62.5%; line-height: 1; font-family: Arial, Tahoma, sans-serif; padding-bottom: 60px; }

article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; }
ol, ul { list-style: none; }

blockquote, q { quotes: none; }
blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; }
strong { font-weight: bold; }  

table { border-collapse: collapse; border-spacing: 0; }
img { border: 0; max-width: 100%; }

p { font-size: 1.2em; line-height: 1.35em; margin-bottom: 15px; color: #434343; }

#w { display: block; width: 800px; margin: 0 auto; margin-top: 55px; }  

#ddmenu {
  display: block;
  width: 100%;
  height: 80px;
  margin: 0 auto;
  padding: 0 15px;
  background: #fff;
  border-radius: 6px;
  border: 1px solid rgba(0, 0, 0, 0.15);
  box-shadow: 0 1px 1px rgba(20, 20, 20, 0.2);
  cursor: pointer;
  outline: none;
  font-weight: bold;
  color: #8aa8bd;
}

#ddmenu li { display: block; position: relative; float: left; font-size: 1.45em; text-shadow: 1px 1px 0 #fff; border-right: 1px solid #dae0e5; }

#ddmenu li a {
  display: block;
  float: left;
  padding: 0 12px;
  line-height: 78px;
  font-weight: bold;
  text-decoration: none;
  color: #6c87c0;
  -webkit-transition: all 0.2s linear;
  -moz-transition: all 0.2s linear;
  -o-transition: all 0.2s linear;
  transition: all 0.2s linear;
}
#ddmenu li:hover > a { color: #7180a0; background: #d9e2ee; }

#ddmenu ul {
  position: absolute;
  top: 88px;
  width: 130px;
  background: #fff;
  display: none;
  margin: 0;
  padding: 7px 0;
  list-style: none;
  border-radius: 3px;
  border: 1px solid rgba(0, 0, 0, 0.2);
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
}

/* Стрелочки */
#ddmenu ul:after {
  content: "";
  width: 0;
  height: 0;
  position: absolute;
  bottom: 100%;
  left: 8px;
  border-width: 0 8px 8px 8px;
  border-style: solid;
  border-color: #fff transparent;  
}

#ddmenu ul:before {
  content: "";
  width: 0;
  height: 0;
  position: absolute;
  bottom: 100%;
  left: 4px;
  border-width: 0 10px 10px 10px;
  border-style: solid;
  border-color: rgba(0, 0, 0, 0.1) transparent;  
}

#ddmenu ul li {  
  display: block;  
  width: 100%;  
  font-size: 0.9em;  
  text-shadow: 1px 1px 0 #fff;
}

#ddmenu ul li a {
  display: block;
  width: 100%;
  padding: 6px 7px;
  line-height: 1.4em;
  -webkit-transition: all 0.2s linear;
  -moz-transition: all 0.2s linear;
  -o-transition: all 0.2s linear;
  transition: all 0.2s linear;
}
#ddmenu ul li a:hover {
  background: #e9edf3;
}


готово!
Автор публикации: Загрузка
Загрузка
Вовчик, это его n материал
Источник: http://spyrestudios.com/coding-a-horizontal-navigation-bar-w...
  • Всего комментариев: 1

Webing
0
Webing написал: Написано 15 Марта 2013 в 22:29
Комментарий №1
1. Первый элемент сверстал косячно. т.е "Главная" слева отступ большой. (Решение: в #ddmenu padding убрать 15px)
2. Вверху и внизу слишком большой отступ. Это делает меню некрасивым. (Решение: сделать слева-справа отступ больше или уменьшить сверху-снизу.)
3. Код гавенный. Пол кода можно удалить. Некоторые стили никак не относятся к меню.

  • Оставить комментарий:
Добавлять комментарии могут только зарегистрированные пользователи.
Регистрация | Вход
Меню сайта
Категории
Для помощи создания сайта uCoz 25
Скрипты и модификации для Ucoz 2106
Шаблоны форумов Ucoz 28
Шаблоны сайтов Ucoz 430
Авторство Webo4ki 309
php скрипты для ucoz 57
Графика для uCoz 40
Мини-чат
Последние комментарии
  • LeKcUs написал:
  • Спасибо... А вот насчет "Но вот баги" можно поконкретнее???
  • CbIPoK2513 написал:
  • Интересная задумка и реализация.. Но вот баги.. А так хорошо.
  • LeKcUs написал:
  • Запомни раз и на всегда... Все файлы ВСЕ с окончанием .swf пишутся в Adobe Flash. Я лично пишу в Adobe Flash CS6 cool Я скоро выложу новый шаблон более интересный...
  • Winston888 написал:
  • Я с флешь не сталкивался поэтому интересно файл main.swf ты сам писал ? Если да то через что ?
  • LeKcUs написал:
  • Я думаю что следующая версия будет по дизайну лучше! Ждите.... cool
    Последние темы
    Опрос
    215
    А
    Р
    Что произойдёт: $("#...
    Статистика
    Анализ интернет сайта
    0
    онлайн
    0
    наших
    0
    чужих
    Онлайн всего: 2
    Гостей: 1
    Пользователей: 1
    0
    Сегодня были
    Топ пользователей: