Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Создание вертикально раздвигающегося меню при помощи Java Script
 
 автор: pautina   (20.01.2009 в 12:08)   письмо автору
 
 

Здравствуйте Уважаемое сообщество ни подскажете как при помощи Java Script сделать вертикальное раздвигающееся меню. Для меню есть пункт и подпункты, как только пользователь кликает мышью по пункту оно раздвигается на подпункты. В начале как только страница загружена все подпункты свернуты. Ни модскажете как такое создать.

  Ответить  
 
 автор: elenaki   (20.01.2009 в 12:36)   письмо автору
 
   для: pautina   (20.01.2009 в 12:08)
 

http://www.woweb.ru/load/101

  Ответить  
 
 автор: pautina   (20.01.2009 в 19:44)   письмо автору
 
   для: elenaki   (20.01.2009 в 12:36)
 

Вы ни скажете, если использовать такой код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> 
<title>Untitled Document</title> 
<script type="text/javascript"> 
function menu_in(id, height){ 
    id_ = id; 
    height_ = height; 
    he = parseInt(document.getElementById(id_).style.height); 
    if(he < height){ 
        show_in(); 
    }else{ 
        close_in(); 
    } 

function show_in(){ 
    he += 5; 
    document.getElementById(id_).style.height = he + 'px'; 
    if(he < height_ + 5){ 
        setTimeout('show_in()', 15); 
    } 

function close_in(){ 
    he -= 5; 
    document.getElementById(id_).style.height = he + 'px'; 
    if (he > 0){ 
        setTimeout('close_in()', 15); 
    } 

</script> 
</head> 
<body> 
<a href="#" onclick="menu_in('menus1', 120);">menus1</a> <br /> 
<div id="menus1" style="width:170px; height:0px; background-color: #99CCFF; overflow:hidden;">  CPU и платформа<br /> 
  Видеокарты<br /> 
  HDD и накопители<br /> 
  Комплектующие<br /> 
  Мониторы<br /> 
  Звук и видео на ПК</div> 
<a href="#" onclick="menu_in('menus2', 80);">menus2</a> <br /> 
<div id="menus2" style="width:170px; height:0px; background-color:#00FF99; overflow:hidden;"> 
  CPU и платформа<br /> 
  Видеокарты<br /> 
  HDD и накопители<br /> 
  Комплектующие</div> 
</body> 
</html> 

как мне увеличить расстояние между пунктами меню, и подпунктами.

  Ответить  
 
 автор: elenaki   (20.01.2009 в 20:32)   письмо автору
 
   для: pautina   (20.01.2009 в 19:44)
 

he += 5;

  Ответить  
 
 автор: pautina   (21.01.2009 в 09:48)   письмо автору
 
   для: elenaki   (20.01.2009 в 20:32)
 

Значение
he += 5;
менял высота между пунктами и подпунктами не изменилась.

  Ответить  
 
 автор: elenaki   (21.01.2009 в 10:18)   письмо автору
 
   для: pautina   (21.01.2009 в 09:48)
 

увеличьте расстояние между строк в диве
(style="width:170px; height:0px; background-color: 99CCFF; overflow:hidden; line-height:50px;")
а самому диву дайте нужную высоту (onclick="menu_in('menus1', 120);") кстати, это очень
неудобно, что высота выпадающего дива забита изначально. при добавлении пунктов в
подменю, придется заново рассчитывать высоту и менять ее при вызове функции. лучше
динамически вычислять высоту дива. как - пока не могу сказать, но думаю, это возможно.

  Ответить  
 
 автор: mikha   (21.01.2009 в 16:36)   письмо автору
 
   для: pautina   (20.01.2009 в 12:08)
 

Усё.. взгяд замылился. Этот вариант лучше.
Что там надо было раздвинуть?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title></title>
</head>
<body>
<script type="text/javascript">
shag = 2;
time = 15;
arr_height_menu = new Array();
function visota(id_m){
    var arr_height = new Array();
    var obj = document.getElementById(id_m).getElementsByTagName('div');
    for(var i = 0, len = obj.length; i < len; i++){
        arr_height[i] = obj[i].offsetHeight;
        obj[i].style.height = '0px';
        obj[i].style.overflow = 'hidden';
    }
    arr_height_menu[id_m] = arr_height;
}
function menu_in(id_m){
    id_m_ = id_m;
    obj_menu = document.getElementById(id_m_);
    var obj = obj_menu.childNodes;
    for(var i = 0, len = obj.length, n = 0; i < len; i++){
        if(obj[i].nodeName == 'A'){
            obj[i].onclick = new Function("function2("+n+")");
            n++;
        }
    }
}
function function2(n){
    height_menu = arr_height_menu[id_m_];
    height = height_menu[n];
    var obj = obj_menu.getElementsByTagName('div');
    obj_n = obj[n];
    he = parseInt(obj_n.style.height);
    if(he < height) show_in(); else close_in();
}
function show_in(){
    he += shag;
    obj_n.style.height = he + 'px';
    if(he < height) setTimeout('show_in()', time);
    if(he > height) obj_n.style.height = height + 'px';
}  
function close_in(){
    he -= shag;
    if(he < 0) he = 0;
    if(he < shag) obj_n.style.height = '0px';
    obj_n.style.height = he + 'px';
    if(he > 0) setTimeout('close_in()', time);
}
</script>
<div style="width:170px; border:#000000 1px solid;" id="mmm" onmouseover="menu_in('mmm');"> <a href="#">Новости1</a>
  <div style="background-color:#99CCFF;">sdgsdfgdfgdsf sd <a href="#">ertg</a> w</div>
  <a href="#">Форум1</a>
  <div style="background-color:#FFFF99;">sdgsdfgdfgdsf sdfg sdfg fasd fdg as wtqw twtqdf aw wafwarg wgrweg </div>
  <a href="#">Объявления1</a>
  <div style="background-color:#99FFCC;">sdgs wrt wr tqd wrt qwrt qwfgdt qwr</div>
</div>
<script type="text/javascript"> 
visota('mmm');
</script>
<br />
<br />
<div style="width:170px; border:#000000 1px solid;" id="nnn" onmouseover="menu_in('nnn');"> <a href="#">Новости2</a>
  <div style="background-color:#99CCFF;">sdgsdfgdfgdsf sd <a href="#">ertg</a> wer wrt qwwr  rwq fg sdfg fasd fdg asdf aw wwert qwert qwt w4 t4t</div>
  <a href="#">Форум2</a>
  <div style="background-color:#FFFF99;">45t45 345 4y hryjt yjher hery eryjer yj eryj eryj eryjhrw therjhwr hwrh</div>
  <a href="#">Объявления2</a>
  <div style="background-color:#99FFCC;">45t45 345 4y hryjt yjher hery eryjer yj eryj eryj </div>
</div>
<script type="text/javascript"> 
visota('nnn');
</script>
</body>
</html>

  Ответить  
 
 автор: ~AquaZ~   (25.11.2009 в 08:38)   письмо автору
 
   для: mikha   (21.01.2009 в 16:36)
 

Первая мысль, кагда я увидел код
XHTML 1.0 Transitional
: ПИ****! Интересно: Переходный XHTML!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования