Вертикальное раскрывающееся меню
Если на сайте мало места, но очень хочется разместить большое количество пунктов в меню, к нам на помощь приходит вертикальное раскрывающееся меню. Данное меню впишется практически в любой дизайн сайта, конечно при условии визуального изменения под стиль сайта. Ну хватит слов, перейдем к делу, а точнее к коду.
CSS-код:
#menu_body {
background:#81A192;
width:200px
}
#menu_body ul li {
list-style-type:none;
border-bottom:1px solid #fff;
margin-left:-40px;
padding-left:7px
}
#menu_body ul li a {
color:#fff;
font-family:verdana,arial,sans-serif;
text-decoration:none
}
#menu_body ul li ul li {
border:0;
list-style-type:square;
color:#fff;
list-style-position:inside
}
#menu_body ul li ul {
border-top:1px solid #fff;
margin-left:-7px;
padding-left:50px
}
JavaScript: (добавляем в head после CSS)
var id_menu = new Array('sub_menu_1','sub_menu_2','sub_menu_3');
function allclose() {
for (i=0; i < id_menu.length; i++){
document.getElementById(id_menu[i]).style.display = "none";
}
}
function openMenu(id){
for (i=0; i < id_menu.length; i++){
if (id != id_menu[i]){
document.getElementById(id_menu[i]).style.display = "none";
}
}
if (document.getElementById(id).style.display == "block"){
document.getElementById(id).style.display = "none";
}else{
document.getElementById(id).style.display = "block";
}
}
В строке
var id_menu = new Array('sub_menu_1','sub_menu_2','sub_menu_3');
нужно добавить значений “sub_menu” столько, сколько групп меню будет, т.е. если будет 10 групп раскрывающихся меню, то здесь должны быть прописаны все 10 значений: sub_menu_1′,’sub_menu_2′,’sub_menu_3′,’sub_menu_4′,’sub_menu_5′ и т.д. Соответственно и HTML код должен содержать 10 блоков, иначе будут проблемы а работе.
В <body> добавляем вызов функции:
HTML-код:
<body onload="allclose()">
И в конце само тело нашего меню.
HTML-код:
<div id="menu_body">
<ul>
<li><a href="#" onclick="openMenu('sub_menu_1');return(false)">menu 1</a>
<ul id="sub_menu_1">
<li><a href="#">sub menu 1</a></li>
<li><a href="#">sub menu 2</a></li>
<li><a href="#">sub menu 3</a></li>
<li><a href="#">sub menu 4</a></li>
<li><a href="#">sub menu 5</a></li>
<li><a href="#">sub menu 6</a></li>
<li><a href="#">sub menu 7</a></li>
</ul>
</li>
<li><a href="#" onclick="openMenu('sub_menu_2');return(false)">menu 2</a>
<ul id="sub_menu_2">
<li><a href="#">sub menu 1</a></li>
<li><a href="#">sub menu 2</a></li>
<li><a href="#">sub menu 3</a></li>
<li><a href="#">sub menu 4</a></li>
<li><a href="#">sub menu 5</a></li>
<li><a href="#">sub menu 6</a></li>
<li><a href="#">sub menu 7</a></li>
</ul>
</li>
<li><a href="#" onclick="openMenu('sub_menu_3');return(false)">menu 3</a>
<ul id="sub_menu_3">
<li><a href="#">sub menu 1</a></li>
<li><a href="#">sub menu 2</a></li>
<li><a href="#">sub menu 3</a></li>
<li><a href="#">sub menu 4</a></li>
<li><a href="#">sub menu 5</a></li>
<li><a href="#">sub menu 6</a></li>
<li><a href="#">sub menu 7</a></li>
</ul>
</li>
</ul>
</div>
Пример, того что получится, можно посмотреть здесь.
Работоспособность:
Internet Explorer 8 
Firefox 3.5.4 
Opera 9.64 
При оставлении комментария, пожалуйста, воздержитесь от написания ссылок на сторонние ресурсы. Все комментарии фильтруются как плагинами так и вручную. Не тратьте своё и моё время.
Спасибо за понимание!
Очень хорошее меню, давно искал такое. Большое спасибо!
Добрый день!
Очень хочется эту менюшку, но у меня не работает…
я не профессионально занимаюсь html и css, но вроде все сделал верно…
не могли бы Вы мне помочь в этом?
Георгий, я Вам с радостью помогу, но для начала мне нужно увидеть Ваше меню, чтобы понять в чем проблема.
Здравствуйте!
я тоже очень хотела бы сделать такое меню,но пока не получается.меню делаю не основное,а для категорий раздела в каталоге статей.из вашей статьи смогла только последний пункт сделать,а остальные-мозгов не хватает че куда поставить……..сайт мой на ucoz.вот адрес:http://salon-exclusive.my1.ru/publ
Очень надеюсь на вашу помощь,пожалуйста!
Что, конкретно, вызывает затруднения?
Куда ставить эти фрагменты:
JavaScript: (добавляем в head после CSS)—–(ГДЕ ЭТО?)
и этот:
HTML-код:
???????????????
Нужно найти в коде закрывающий тэг
и добавить перед ним код
HTML-код нужно добавить между тэгами
в нужное Вам место.
ВОТ ТАКАЯ СТРАНИЦА БЫЛА:
А ВТОРОЙ КОД ТОГДА КУДА СТАВИТЬ????(ИЗВИНИТЕ,ПОЖАЛУЙСТА,ЧТО Я ТАКАЯ ТУПАЯ!)
Нужно пользоваться HTML редактором, а не визуальным.
так я в визуальный и не заходила((((((((((((((
Вы не могли бы зайти на мой сайт и глянуть,что я не так делаю?я вроде сейчас поставила эти 2 кода-но меню не изменилось(((((
1. Тэг body должен быть один на странице, у вас их два. Второй добавлять не нужно, нужно отредактировать первый.
2. Я не нашел у Вас в коде JavaScript который нужен для работы меню.
3. Я не нашел у Вас CSS код для меню.
Нужно ставить все коды которые здесь написаны, а не только два.
Я установил это меню для теста у себя, _http://jemand.ucoz.net, работает, если всё сделать правильно.
КУДА ЗДЕСЬ СТАВИТЬ JavaScript??????
Скажите как вы редактируете страницу? Перечислите все пункты куда заходите для редактирования.
Я Вам написал куда вставлять JS.
ОЙ!!!!!!!ВСЕ ПОЛУЧИЛОСЬ!!!СПАСИБО,ЧТО ТАК ДОЛГО ТЕРПЕЛИ МОЙ БРЕД! СТОИЛО МНЕ ДОБАВИТЬ КОД В CSS И ВСЕ ПОЛУЧИЛОСЬ!!СПАСИБО ВАМ ОГРОМНОЕ!А СКАЖИТЕ ЕЩЕ ,ПОЖАЛУЙСТА, КАК СДЕЛАТЬ ФОН НЕ ЗЕЛЕНЫМ,А ПРОЗРАЧНЫМ????
Фон настраивается в CSS.
помогите, плз. вот страница сайта. менюшка не пашет(((( еще хотелось бы убрать эти квадраты возле ссылок и заменить их на что то вроде >
http://affliction-russia.ru/mensstees.php
подскажите, пожалуйста, что необходимо изменить, что бы при нажатии на пункты в открывшемся меню, оно не закрывалось, но закрывалось, если переходишь к другому меню????
Спасибо за шаблон меню. Наконец нашла то, что нужно. Только у меня уточняющий вопрос. Как убрать точки и кружки перед названием меню и субменю, а также их подчеркивания?
В CSS параметр text-decoration: none, выбранный мной для этой цели вообще не действует. Что не так? Или где нужно изменить чтобы это все убрать?
Еще подскажите, где и что нужно добавить, чтобы сделать от некоторых пунктов субменю еще один уровень подпунктов.
И еще, простите, не сразу соображаю.
Как сделать, чтобы пункты субменю закрывались только после клика мышью на меню. Сейчас они закрываются сами, если перейти на другую страницу или по клику на другой пункт меню.
Огромное спасибо!!! Добавила себе в коллекцию))) Все быстро и просто, и работает даже в IE6!
Спасибо за скрипт. Но у меня вопрос. Вобщем это меню инклудится ко всем страницам сайта отдельным файлом пхп. Допустим три главных пункта и в каждом n подпунктов. Вот я раскрыл один главный пункт, нажал на ссылку подпункта, перешёл куда надо. А меню снова свернулось. А мне нужно чтобы этот пункт, который я развернул отсавался в том же состоянии. Как это можно сделать?
Как сделать данное меню многоуровневым или хотя бы трёхуровневым?
Спасибо отличная менюшка!
Слишком сложно, код необходимо оптимизировать.