Здравствуйте, как задать скорость выпадающего меню и чтобы меню при наведении курсора не просто появлялясь, а с определенной скоростью выдвигалась в низ и задвигалась если курсор не наведен тоже с определенной скоростью
вот скрипт:
Код 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>
Заранее огромное спасибо
Выпадающее меню
Модератор: Duncon
Проще всего для такой цели использовать фреймворки типа jQuery, где уже есть функции типа toggleSlide или slideToggle, не помню, там можно указать скорость (точно или примерно)
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
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% функциональности от этой библиотеки для анимации участка и необходимости тягать за собой в лучшем случае десятки кб кода а то и сотни..
В итоге имеем сколько-то байт кода и отлично работающую анимацию, вместо подключения библиотек для баранов и использования 0,1% функциональности от этой библиотеки для анимации участка и необходимости тягать за собой в лучшем случае десятки кб кода а то и сотни..
[syntax=Delphi] [/syntax]
большое спасибо за написания целой лекции! Видно что вы хороший знаток в этом деле, но я новечек.
Если есть возможность просто напишите что-куда вставить и все.
Заранее спасибо!
Если есть возможность просто напишите что-куда вставить и все.
Заранее спасибо!
jQuery для тех, кому он нужен. Если необходим только и исключительно этот функционал, при этом критично быстродействие - можно и свою функцию написать, а если его функционал много где и много как используется - нет смысла изобретать велосипедDuncon писал(а):jQuery для дебилов не знающих JavaScript.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Не, я написал все нужные кроссбраузерно работающие методы, не нужно искать и мучится, новичок не новичок а без самостоятельной практики программист никогда не получится, а обезьянок копипастеров тут никто не любит - для них jQuery мотолс и прочие библиотеки написаны..
[syntax=Delphi] [/syntax]
не ужели так сложно написать что куда и все?
Нет таких задач где он везде используется(по крайней мере не для сайтов), тут речь скорее о другом что подавляющее большинство не сможет это велосипед написать, у меня с нуля уходит до часа времени на любой спецэффект типа слайдера и прочего, врать сильно не хочу но вот на днях нарезал(оформлял) слайдер около 2 часов анимаировал около часа. Естественно некоторые моменты сложней, к примеру галерею я написал(немного не так как можно было с точки зрения анимации, был уставшим и плохо соображал) с где-то с год назад за 3 дня параллельно с другими подгрузками по работе.. (не буду голословным landshaftica.ru/works 7,7кб кода вместо 150кб или сколько там на jQuery, бойан меню слева туда же 9,2кб кода(с остальным для сайта) вместо хз сколько приплюсовать к jQuery, причём я много сайтов видел с использованием этой либы, в среднем обычно +500кб к дизайну - это много, я понимаю что всё это кэшится, но перлы которые выдают дизайнеры сами по себе много весят приходится экономить на всём, про быстродействие уже молчу.)jQuery для тех, кому он нужен. Если необходим только и исключительно этот функционал, при этом критично быстродействие - можно и свою функцию написать, а если его функционал много где и много как используется - нет смысла изобретать велосипед
Вопрос не в трудно, вопрос в том чтоб из вас получился программист, а не копипастер или вы научились пользоваться поиском, нужно чтоб кто-то сделал за вас есть раздел заказы для программистов. К тому же реализация зависит от вашего кода..не ужели так сложно написать что куда и все?
[syntax=Delphi] [/syntax]
так я всеравно в этом деле не понимаю почти и не собираюсь стать праграммистом и сайт у меня на цмс. короче зря я написал на этот форум время только попусту трачу!!!!!!!!!!!!!!
В раздел "Вакансии и заказы для программистов" пишите тогда, время мы на вас потратили а не вы на нас, в поиске халявы все..
[syntax=Delphi] [/syntax]