Выпадающее меню

Обсуждение вопросов клиентского программирования.

Модератор: Duncon

SHAHIN
Сообщения: 4
Зарегистрирован: 11 сен 2013, 15:43

11 сен 2013, 15:47

Здравствуйте, как задать скорость выпадающего меню и чтобы меню при наведении курсора не просто появлялясь, а с определенной скоростью выдвигалась в низ и задвигалась если курсор не наведен тоже с определенной скоростью
вот скрипт:
Код PHP:

t type="text/javascript">

<!--

var timeout = 500;

var closetimer = 0;

var ddmenuitem = 0;

// open hidden layer

function mopen(id)

{

// cancel close timer

mcancelclosetime();

// close old layer

if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';

// get new layer and show it

ddmenuitem = document.getElementById(id);

ddmenuitem.style.visibility = 'visible';

}

// close showed layer

function mclose()

{

if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';

}

// go close timer

function mclosetime()

{

closetimer = window.setTimeout(mclose, timeout);

}

// cancel close timer

function mcancelclosetime()

{

if(closetimer)

{

window.clearTimeout(closetimer);

closetimer = null;

}

}



// close layer when click-out

document.onclick = mclose;

// -->

</script>
вот код:
Код PHP:

<ul id="sddm">

<li><a href="/" onmouseover="mopen('m1')" onmouseout="mclosetime()">Меню</a>

<div id="m1" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">

<a href="#">HTML DropDown</a>

<a href="#">DHTML DropDown menu</a>

<a href="#">JavaScript DropDown</a>

<a href="#">DropDown Menu</a>

<a href="#">CSS DropDown</a>

</div>

</li>

</ul>
Заранее огромное спасибо
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

17 сен 2013, 12:59

Проще всего для такой цели использовать фреймворки типа jQuery, где уже есть функции типа toggleSlide или slideToggle, не помню, там можно указать скорость (точно или примерно)
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

17 сен 2013, 14:40

jQuery для дебилов не знающих JavaScript. Задача подобная решается: меряем время начала анимации start=new Date затем задаём интервал срабатывания анимации скажем 10мс или меньше, но не меньше 4мс - браузеры не считают меньше, внутри интервала анимации считаем прогресс анимации (new Date - start) / время_на_анимацию;(например 1000мс) получим float значения от нуля к единице, это даст плавность срабатывания, потому что расчёты, как показывает практика, при setInterval будут "неровными" и как следствие будут рывки.. Всё что остаётся полученное значение умножить на нужную высоту элемента (offsetHeight) и в обратном порядке то же самое вычитаем значение из высоты (e.style.height=h-(progress * h) + 'px' ;) .. Естественно не забыть вычистить интервал если он выходит за единицу.. Ещё есть момент скрытые блоки не будут обсчитаны пока не будут показаны, я это обхожу так e.style.display = 'block';h = parseInt(e.offsetHeight); e.style.height = 0 + 'px';. Чтоб небыло полосы прокрутки overflow:hidden
В итоге имеем сколько-то байт кода и отлично работающую анимацию, вместо подключения библиотек для баранов и использования 0,1% функциональности от этой библиотеки для анимации участка и необходимости тягать за собой в лучшем случае десятки кб кода а то и сотни..
[syntax=Delphi] [/syntax]
SHAHIN
Сообщения: 4
Зарегистрирован: 11 сен 2013, 15:43

19 сен 2013, 01:57

большое спасибо за написания целой лекции! Видно что вы хороший знаток в этом деле, но я новечек.
Если есть возможность просто напишите что-куда вставить и все.
Заранее спасибо!
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

19 сен 2013, 10:52

Duncon писал(а):jQuery для дебилов не знающих JavaScript.
jQuery для тех, кому он нужен. Если необходим только и исключительно этот функционал, при этом критично быстродействие - можно и свою функцию написать, а если его функционал много где и много как используется - нет смысла изобретать велосипед
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

19 сен 2013, 10:55

Не, я написал все нужные кроссбраузерно работающие методы, не нужно искать и мучится, новичок не новичок а без самостоятельной практики программист никогда не получится, а обезьянок копипастеров тут никто не любит - для них jQuery мотолс и прочие библиотеки написаны..
[syntax=Delphi] [/syntax]
SHAHIN
Сообщения: 4
Зарегистрирован: 11 сен 2013, 15:43

19 сен 2013, 12:55

не ужели так сложно написать что куда и все?
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

19 сен 2013, 13:55

jQuery для тех, кому он нужен. Если необходим только и исключительно этот функционал, при этом критично быстродействие - можно и свою функцию написать, а если его функционал много где и много как используется - нет смысла изобретать велосипед
Нет таких задач где он везде используется(по крайней мере не для сайтов), тут речь скорее о другом что подавляющее большинство не сможет это велосипед написать, у меня с нуля уходит до часа времени на любой спецэффект типа слайдера и прочего, врать сильно не хочу но вот на днях нарезал(оформлял) слайдер около 2 часов анимаировал около часа. Естественно некоторые моменты сложней, к примеру галерею я написал(немного не так как можно было с точки зрения анимации, был уставшим и плохо соображал) с где-то с год назад за 3 дня параллельно с другими подгрузками по работе.. (не буду голословным landshaftica.ru/works 7,7кб кода вместо 150кб или сколько там на jQuery, бойан меню слева туда же 9,2кб кода(с остальным для сайта) вместо хз сколько приплюсовать к jQuery, причём я много сайтов видел с использованием этой либы, в среднем обычно +500кб к дизайну - это много, я понимаю что всё это кэшится, но перлы которые выдают дизайнеры сами по себе много весят приходится экономить на всём, про быстродействие уже молчу.)
не ужели так сложно написать что куда и все?
Вопрос не в трудно, вопрос в том чтоб из вас получился программист, а не копипастер или вы научились пользоваться поиском, нужно чтоб кто-то сделал за вас есть раздел заказы для программистов. К тому же реализация зависит от вашего кода..
[syntax=Delphi] [/syntax]
SHAHIN
Сообщения: 4
Зарегистрирован: 11 сен 2013, 15:43

19 сен 2013, 23:11

так я всеравно в этом деле не понимаю почти и не собираюсь стать праграммистом и сайт у меня на цмс. короче зря я написал на этот форум время только попусту трачу!!!!!!!!!!!!!!
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

20 сен 2013, 11:18

В раздел "Вакансии и заказы для программистов" пишите тогда, время мы на вас потратили а не вы на нас, в поиске халявы все..
[syntax=Delphi] [/syntax]
Ответить