Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2008, 15:27   #1
beginner
Пользователь
 
Регистрация: 24.12.2006
Сообщений: 33
Вопрос Выезжающее меню при загрузке страницы

Добрый день, уважаемые посетители форума!
Несколько дней назад возникла необходимость в создании навигационного меню, которые бы "выплывало" после окончательной загрузки страницы из-под логотипа, находящегося в шапке страницы (т.е. с определенными координатами места страницы).
В связи с этой проблемой - несколько вопросов:
1. Как определить средствами JavaScript окончание загрузки страницы?
2. Есть ли у кого-нибудь похожие примеры, которые бы помогли разобраться в этой проблеме?
beginner вне форума Ответить с цитированием
Старый 30.06.2008, 15:41   #2
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

1. Используйте событе onLoad:
Код HTML:
<body onLoad="javascript: myfunc();">
....
2. Само меню предлагается сделать дивом с абсолютным позиционированием, не используя цикл for-next, а юзая timer (setTimeOut) во избежании лишнего расхода памяти, беспокойства юзера сообщениями браузера о возможности зацикливания скрипта.
Предлагается создать глобальную переменную и с каждой пробежкой функции по таймеру - прибавлять некоторое значения, влияющее на скорость к текущей верхней позиции дива (начальная - равна отрицательному значению и абослютное значение верхней точки равно его высоте). В каждой пробежке функции нужно будет задать условие, которое остановит таймер (clearTimeOut), если верхнее значение больше или равно нулю.
Узнать о функциях тайминга можно в школе w3schools

Добавлено:
Кстати, глобальную переменую можно и не юзать, а использовать конструкцию типа:
Код HTML:
function iterate_me(){
   var mnu_el = document.getElementById("mymnu");
   if (!mnu_el) return false;
   mnu_el.style.top = parseInt(mnu_el.style.top) + anim_speed + "px"; //автоинкремент
..

Последний раз редактировалось SkyM@n; 30.06.2008 в 16:22.
SkyM@n вне форума Ответить с цитированием
Старый 30.06.2008, 20:55   #3
beginner
Пользователь
 
Регистрация: 24.12.2006
Сообщений: 33
По умолчанию

Спасибо!
Все получилось! Использовал SetTimeOut и глобальную переменную (с ней проще изменять этот параметр).
Кстати, а есть смысл использовать ClearTimeOut? Работает и без использования данной функции!
beginner вне форума Ответить с цитированием
Старый 30.06.2008, 22:51   #4
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Цитата:
Сообщение от beginner Посмотреть сообщение
Спасибо!
Кстати, а есть смысл использовать ClearTimeOut? Работает и без использования данной функции!
Ну как я уже указал выше - смысл есть.
Таймер же надо остановить?
SkyM@n вне форума Ответить с цитированием
Старый 01.07.2008, 00:24   #5
beginner
Пользователь
 
Регистрация: 24.12.2006
Сообщений: 33
По умолчанию

Я остановил его условием, не применяя указанной функции.
beginner вне форума Ответить с цитированием
Старый 01.07.2008, 11:00   #6
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Цитата:
Сообщение от beginner Посмотреть сообщение
Я остановил его условием, не применяя указанной функции.
То есть вхождения в функцию нету больше?
SkyM@n вне форума Ответить с цитированием
Старый 01.07.2008, 11:19   #7
beginner
Пользователь
 
Регистрация: 24.12.2006
Сообщений: 33
По умолчанию

Нет! Только использовал ее в цикле для увеличения параметра относительно верхнего левого угла через некоторый временной промежуток.
beginner вне форума Ответить с цитированием
Старый 02.07.2008, 08:43   #8
beginner
Пользователь
 
Регистрация: 24.12.2006
Сообщений: 33
По умолчанию

Теперь возникла проблема со скрытием ссылок (а-ля ячеек таблицы). Идея следующая - в первую очередь должно опускаться меню со спрятанными ссылками, а через некоторое время (когда меню полностью опустится) с заданным интервалом должны появляться ссылки одна за другой (Возможно ли сделать путем увеличения прозрачности ячеек от 0 до 1?). Сделал ячейки как отдельные слои, однако никак не получается их скрыть.

Приложен файл, где можно посмотреть как у меня это реализовано.
Вложения
Тип файла: html 2.html (4.0 Кб, 16 просмотров)
beginner вне форума Ответить с цитированием
Старый 02.07.2008, 13:51   #9
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Не понял...
SkyM@n вне форума Ответить с цитированием
Старый 02.07.2008, 14:01   #10
beginner
Пользователь
 
Регистрация: 24.12.2006
Сообщений: 33
По умолчанию

Хорошо, разложу движения меню по пунктам:
1. После загрузки страницы должен визуально опускаться главный слой меню (т.е. чтобы был виден только контур меню - без слоев-ячеек). У меня не получается оставить видимым только контур - остается либо полностью видимое меню, либо полностью невидимое.
2. Когда меню полностью загрузилось, появляются постепенно (увеличивая параметр их прозрачности) его пункты. Не получается сделать плавный переход от пустоты до полного появления.
Такие задумки вообще реализуемы?
beginner вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выезжающее меню beginner JavaScript, Ajax 0 18.07.2008 20:13
Как сделать разрыв страницы печати по условию и узнать номер страницы Leanna Microsoft Office Excel 2 21.01.2008 06:59
Ошибка при загрузке.... Ronni10 Операционные системы общие вопросы 6 10.01.2008 22:20
Ошибка при загрузке Delphi 6 bllem Общие вопросы Delphi 10 20.11.2006 20:37