| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Помогите разобраться со скриптом |
| Автор: PROme 13.3.2004, 19:09 | ||||||
| Очень уж я слаб в ЖС Надыбал такой скрипт:
это в отдельном файле и работает так:
+ вот это:
Кароче скрипт при наведении мыши на объект вываливает меню (onmouseover="ypSlideOutMenu.showMenu('menu1');"), при отведении =) - убирает (onmouseout="ypSlideOutMenu.hideMenu('menu1');") хотя я думаю и так све понятно... При этом меню перед появлением невидно, также как и после свертывания. Мне нужно чтобы еще до вываливания (наведения мыши на объект) была видна нижняя часть меню, при наведении - высовывать его целиком, а при отведении - в исходное состояние (видня нижняя часть - т.е. меню полностью не прячится). Пожалуйста помогите! |
| Автор: Sardar 13.3.2004, 22:14 | ||||||
| Оценки скрипту потом вынесем... Строчкой:
задается на сколько будет спрятанно меню, в данном случае полностью. Отними от всей это лабуды столько пикселей на сколько это дело будет торчать. Можно задать это в конструкторе, но тогда вот эти строки не нужны:
Что бы меню не исчезало, измени следующее:
P.S. Первая туева хуча строк вообще не нужна, ты же не системную утилиту по определению платформы пользователя пишешь |
| Автор: PROme 14.3.2004, 00:39 |
| Sardar ну спасибо тебе человечище!!! Хотел че-нить с твоим рейтингом сделать, а там ашыбка Ниче, я тебе это припомню ЗЫ: а скрипт, ясен пень не я писал - нашел на диске - это было выпадающее меню... я его доделаю, почищу, а потом еще потревожу, мож че подскажешь, а то я могу и лишнего оставить... |
| Автор: Sardar 14.3.2004, 03:32 |
| PROme Как скрпт будет готов, кинь мне на мыло. Будет время попробую оптимизировать. |
| Автор: PROme 14.3.2004, 10:38 | ||||
Тут еще проблемка...
Юзается чтобы опустить/поднять меню... Если я пишу что-то типа такого:
Ничего не происходит К томуже уберал я эти события (при неведении/отведении мыши от текста, сохранил, обновил - а оно все равно так!) Помогите пожалуйста! |
| Автор: Alx 14.3.2004, 10:56 |
| это потому, что эта функция выполняется перед загрузкой всего документа, т.е. она выполняется, а ypSlideOutMenu ещё не существует! поэтому сделай так: <body onload="ypSlideOutMenu.showMenu('menu1');"> или так: <script> function func() {ypSlideOutMenu.showMenu('menu1'); } </script> <body onload="func();"> |
| Автор: PROme 14.3.2004, 11:09 | ||||
| Все равно непахает Я думаю тут дело и в самом модуле, например вот тут:
вот этот кусок:
Хотяможет я и неправ... но там что-то с мышей Очень тебя прошу, если можешь помоги, а то я этого невыдержу |
| Автор: PROme 14.3.2004, 11:28 |
| Да, забыл уточнить - меню двигается при наведении на него мышей, а как по-другому не пытаюсь сдвинуть его с места - ни в какую. Еще немного уточню задачу - может можно как-то легче сделать итак, что надо: загружается страница, меню полу спрятано, потом стартует один ЖС скрипт и сразу выежает меню и пока он работает меню никуда не дергается. Вкрипт отработал - меню заежает в исходную позицию. |
| Автор: PROme 14.3.2004, 12:18 | ||
Начал искать в Сети и нашел одну маленькую статью с таким же кодом, по-моему именно то что мне надо:
Но вот, как я не пытался применить этот код, ничего невыходит Может подскажете ламерюке? |
| Автор: Sardar 14.3.2004, 18:04 | ||||
| Ну вы блин даете... Ладно разберемся с кодом. Все вопрсы по синтактису(во а я не знал что так можно!!!) напрявлять в PM и конечно RTFM. Первый кусок понятно что делает, узнает "всю правду" о клиентском ПО. Далее определяется проторип/функция: ypSlideOutMenu Её задача найти и подготовить менюшку по заданному ID. Также задаются обязательные стили для менюшки. Еще создается переменная ypSlideOutMenu_id содержащая обьект представляющий менюшку. Он также находится в ypSlideOutMenu.Registry - массив всех созданных меню/обьектов. Функция ypSlideOutMenu{object}.load() устанавливает меню в исходное положение. Заодно выставляет обработчики событий onmouseover и onmouseout, т.е. задавать их в тегах не нужно. Убрать реакцию на мышь можно закомментировав:
Создается/регистрируется менюшка через: [ypSlideOutMenu_(id)=] new ypSlideOutMenu(id,направление,поз_х, поз_y, ширина, высота) Всем обьектам/менюшкам заданны функции в прототипе: 1) startSlide - запуск движения, устанавливает временной интервал, вызываетс showMenu 2) slide - расчет новой позиции, вызывается в интервале, через каждые minCPUResolution милисекунд 3) endSlide - сброс анимации, скрытие/открытие меню, вызов возврата 4) setVisibility - думаю понятно 5) moveTo - устанавливает менюшку в заданное положение Это все тобой не используется. Тебе доступны функции управления, собранные в функции/прототипе ypSlideOutMenu(ну где ты еще такое увидишь 1) showMenu(ИД_нужной_менюшки) - показать меню, естественно оно должно быть закруженно и зарегистрированно(if(typeof(ypSlideOutMenu_(id))!='undefined')...). 2) hideMenu(ИД)нужной_менюшки) - скрыть меню Когда меню открывается или наоборот закрывается, то вызывается onactivate или ondeactivate события менюшки. Открыть менюшку можно через ypSlideOutMenu.showMenu('menu_ID'):
Закрыть можно через hideMenu. Это рабтает, я проверил. Вроде все. Второй скрипт работает с вырезкой(clip), первый с хорошим свойством CSS overflow:hidden. Каждый вибирает по вкусу. |
| Автор: PROme 14.3.2004, 20:38 | ||
Сделал, жалуется на строку (последнюю):
Незнаю даже... и к стати, не стоит рассписывать что там зачем, я изучил уже много языков, синтаксис у ЖС очень простой так что видя некоторые вещи в первый раз могу с увереностью сказать зачем они и что делают. А вот если на ЖС (или другом незнакомом) нужно что-то изменить тут уже проблемки, темболее если учесть жесткий синтаксис ЖС и фактически отсутствие каких-либо средств отладки. Спасибо огромное за помощь, мне был бы интересен тот скрипт что у тебя работал, а не описание. Если можешь, плиз прикрепи архив. Такие же проблемы и со вторым... Еще раз огромное спасибо за то что взялся мне помочь |
| Автор: PROme 15.3.2004, 22:31 | ||
А окуда вызывать ypSlideOutMenu.hideMenu('menu1'); Мне надо чтоб страница загружалась - вылазит меню, ЖС скрипт на нем кое-че меняет, а после оно обратно залазит. |
| Автор: Sardar 17.3.2004, 04:21 | ||
| PROme из-за тебя не выспался Переписал скрипт с "нуля", чуть изменив и уличшив алгоритм. Где не понятно вставлял коментарии, вопросы пости сюда.
Ограничения: 1) все стили должны уже быть заданными, не хотел что бы скрипт изменял что либо. 2) обязательные параметры стиля: width(для горизон.),height(для верт.),position:absolute у обоих, overflow:hidden у контейнера. Проверенно в IE, Мозилла 1.6, Опера 7.2. Вроде должно(по спецификациям) работать и под NS4, но если будут проблемы(баги с setTimeout и т.д.), то звыняйте 21 век уже. |
| Автор: PROme 17.3.2004, 14:24 |
| Sardar, не будешь бить меня? Неработает |
| Автор: SVK 17.3.2004, 17:30 |
| убери "\ " в конце строк: SlipMenu.create('menu1','down',20,\ "this.style.backgroundColor='#d8fadf'",\ "this.style.backgroundColor='#c5edd6'",\ "this.style.backgroundColor='#a2c4ab'",\ - заработает Красивая менюшка получается! Клево так выезжает. |
| Автор: PROme 17.3.2004, 20:42 |
| Спасибо всем огромное! |
| Автор: Sardar 17.3.2004, 21:26 |
| Лишь бы у тебя все работало PROme ты уже второй раз подкидываешь интересную идею, первый раз была быстрая работа с файлом очень большого размера. Если так пойдет и дальше, то потихоньку наполним базу исходников на JavaScript и PHP. |