[js]function Menu(obj) { menuid=obj.id; mymenu = document.getElementById(menuid); for (i=20;i<110;i++){ b=i; setTimeout('mymenu.style.height="'+b+'"',i*20); } } function MenuOut(obj) { menuid=obj.id; mymenu = document.getElementById(menuid); for (i=-110;i<-20;i++){ b= -i; setTimeout('mymenu.style.height="'+b+'"',i*20); } }[/js] HTML: <div style="background-color: black;height: 100px;" id="top"></div> <div style="background-color: yellow;float: left;height: 20px;width:120px;" id="m1" onMouseOver="Menu(this)" onMouseOut="MenuOut(this)"></div> <div style="background-color: black ;float: left;height: 20px;width:2px;" id="t1"></div> <div style="background-color: yellow;float: left;height: 20px;width:120px;" id="m2" onMouseOver="Menu(this)" onMouseOut="MenuOut(this)"></div> <div style="background-color: black ;float: left;height: 20px;width:2px;" id="t2"></div> <div style="background-color: yellow;float: left;height: 20px;width:120px;" id="m3"onMouseOver="Menu(this)" onMouseOut="MenuOut(this)"></div> <div style="background-color: black ;float: left;height: 20px;width:2px;" id="t3"></div> <div style="background-color: yellow;float: left;height: 20px;width:120px;" id="m4" onMouseOver="Menu(this)" onMouseOut="MenuOut(this)"></div> <div style="background-color: black ;float: left;height: 20px;width:2px;" id="t4"></div> <div style="background-color: yellow;height: 20px;" id="t5"></div> Делая плавно выдвигающееся меню, проблема в том что оно выдвигается плавно, а вот складывается обратно быстро слишком... не могу понять в чем дело. Попутно вопрос, как заблокировать повторное выполнение функции во время выполнения? или как сделать чтобы функция одновременно не увеличивала один и тот же див
Думаю проблема вот в этом: [js]for (i=-110;i<-20;i++){...} [/js] Например с помощью статической или глобальной булевой переменной. Например с помощью той же переменной, но уже не булевой, а в типа массив. В него пихать те дивы/id дивов над которыми происходит действие. Ну и не забывать их от туда доставать.[/js]
Большое спасибо! Вроде бы условие то правильное (( не знал что нельзя отрицательные числа использовать(
Вопрос не в отрицательных числах, а в их использовании: Код (Text): setTimeout('mymenu.style.height="'+b+'"',i*20); Кстати, можно цикл еще так сделать: Код (Text): for (i=110;i>20;i--) И еще одно кстати, почему i*20, а не просто 500 например?
cпасибо, что то мне такое в голову совсем не пришло) а вот по поводу почему не просто 500 он моментально все это делает http://www.php.ru/forum/viewtopic.php?t=22462
Действительно. Кстати, чтоб он нормально уезжал надо делать (130-i)*20. Ну или (130+i)*20 для отрицательных чисел
под ИЕ8 не работает Плюс глюки, если во время анимации перевести мышку на треугольник другой панели, то начинает анимироваться именно она, а первоначальная умирает на полдороги.