плавающее JavaScript менюПопробуем создать меню на JavaScript, чтобы его пункты плавно приближались при наведении и плавно уменьшались по onmouseout. Идея проста: по событиям onmouseover и onmouseout пункта меню пошагово изменяем его размеры с помощью setTimeout. JavaScript код следующий:
var imn;
var icount = 4; // image count
var iw = 49; // start width
var iw2 = 90; // end width
var ih = 74; // start height
var ih2 = 135; // end height
var stop;
function g() {
for(i=1;i<=icount;i++) {
var im = document.getElementById("i"+i);
if(imn!=i) {
im.width=(im.width>=iw)?(im.width-2):im.width;
im.height=(im.height>=ih)?(im.height-2):im.height;
}
else {
im.width=(im.width<=iw2)?(im.width+2):im.width;
im.height=(im.height<=ih2)?(im.height+2):im.height;
}
}
if(stop<iw2-iw || stop<ih2-ih) {setTimeout("g()", 20); stop++;}
}
Обратите внимание на то, что img каждого пункта меню имеет уникальный порядковый id, а
все меню заключено в теги span с особой обработкой onmouseout для возвращения всех пунктов в исходное состояние.
пример:
Комментарии:28.02.08 в 00:59 Отличный скрипт. Мне очень понравился. Только я в нём не разобрался. Обьясните пожалуйста поподробнее. Спасибо. Alek Veritov 28.02.08 в 08:28 Смысл в том, чтобы последовательно перебрать все img меню и установить им нужный размер, что и делает цикл for. Если img onmouseover, то его размер растет с шагом 2, а остальные уменьшаются или не изменяются. Функция вызывает сама себя до достижения min/max размеров изображений. Скрипт не универсален, можно было бы вынести шаг (step) в глобальные переменные, а условие рекурсии проверять так: if(stop<(iw2-iw)/step && stop<(ih2-ih)/step) sirius365@tut.by 29.02.08 в 03:58 Если есть терпение то разьясните следующее: <TD onmouseout="stop=1; imn=0; g();"
align=middle>(для чего здесь onmouseout="stop=1; imn=0; g();"), что за картинка about.gif
и about_s.gif, почему в onmouseout указывается height=48, а в src="плавающее меню на
JavaScript.files/html_s.gif" width=48, а в onmouseover вообще ничего не указывается? Alek Veritov 29.02.08 в 08:13 onmouseout="stop=1; imn=0; g();" - для того,
чтобы когда уходишь с меню все img возвращались в исходное. Michail (Zmi) 10.07.08 в 11:44 Я заметил что вы в скрипте статически прописываете количество картиночек в меню, я понимаю то для примера это конешно не важно, но все же я бы предложил следующиий подход - ведь он красивый =): NNM 05.12.08 19:33 Доброго времени суток, Отличный вариант меню, Ниразу не имел дело с javascripts, как я понял первый код вставляется в scr/jquery.js , второй в саму страницу, и меню выводится через <script type="text/javascript" src="scr/jquery.js"></script> ... В результате чего ничего не получается ))) Можно поподробней, что куда вставляется ? Vench 13.06.09 18:45 Клевая менюха... авторю респект... один вопрос, почему нельзя передовать id через this.id в качестве аргумента функции? Это существенно бы сократило код. Сергей 28.08.09 12:08 Подскажите мне тупому не могу понять как вставить ссылка на страницу в скрипт. Коля 27.11.09 21:19 Подскажите. AdmFat 16.03.10 21:16 Спасибо. Статья кульь... только не пойму.... чем достигаеться эффект ПЛАВНОГО перехода nifo 16.11.10 16:04 Зачем рассказывать людям о коде, который сами бы ни за что не стали использовать. Готовую javascript библиотеку ведь просто подключить, не правда ли? Alek Veritov 17.11.10 00:04 to nifo: замечание вполне справедливо, в таком виде я этот скрипт нигде не использую, в верхнем меню задействован скрипт на основе jquery.magnifier, который, к слову, давно не поддерживается, поэтому пришлось допиливать самостоятельно. Ответ на ваш вопрос зачем - в обучающих целях. Яшка 21.01.11 22:56 Респект и уважуша автору!!!! Сайту - жить!!! Пасибо, во многом помогли!!!! Зина 27.03.11 09:20 Спасибо за ваш сайт. Все просто и понятно. Очень интересные примеры. ЖК 06.08.11 11:49 ``в верхнем меню задействован скрипт на основе jquery.magnifier`` Alek Veritov 06.08.11 23:42 От того, что данный скрипт представлен в учебных целях - упрощен до предела, не учитываются пропорции, размер контейнера и т.д. Цель статьи не дать готовое решение (их много и так), а показать как все это работает. Поняв суть, приведенный скрипт легко можно допилить под свои нужды. Ну а magnifier соответственно уже доведен до ума, это одно из готовых решений. Gago 15.12.11 00:10 u menya paluchilsa :) balshoe vam spassibo prosto ruski yazik tak chotko ne znayu chtob po dastoynomu vasxvalyat vash brend ). pravilam vashevoo sayta ya uje mnogo ras s raznimi ip ami skazal spasibo ;) i po moemu vi bi ne bili protiv uvidet vash trud v stranicax drugix saytov vot smatrite kak paluchilsa v html stranice i esli est vremeni chitayte interesnuyu statyu v nashem sayte :) Если вам помогла или просто понравилась эта статья вы можете отблагодарить автора кликнув по рекламе. Спасибо! комментировать:
прежде чем писать комментарий убедитесь, пожалуйста, что он не попадает в нижеследующие категории:
прямые оскорбления кого бы то ни было будут удалятся! от кого: |


