Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.06.2010, 21:37
Аватар для KOLANICH
Профессор
Отправить личное сообщение для KOLANICH Посмотреть профиль Найти все сообщения от KOLANICH
 
Регистрация: 22.11.2008
Сообщений: 277

простенькое меню
var menuDelay=1000;
var menu,menuHeader,menuBody,menuItems=[],menuState=false;
function itemDropDown(item){//actions to dropdown
	console.log("Dropping Down",item);///////////////////////////////////////////
	item.style.display="block";//visible style
	
};
function itemRollUp(item){//actions to roll-up
	console.log("Rolling Up:",item);///////////////////////////////////////////
	item.style.display="none";//visible style
	
};
function itemHighlight(evt){
	if(evt.target.className=="GMMenuItem")evt.target.className="GMMenuItemHighlited";
}
function itemUnhighlight(evt){
	if(evt.target.className=="GMMenuItemHighlited")evt.target.className="GMMenuItem";
}
function GM_registerMenuCommand(caption,func){
	if(!menu)makeMenu();
	//return false;
	var menuItem=document.createElement('div');
	menuItem.className="GMMenuItem";
	menuBody.appendChild(menuItem);
	menuItem.addEventListener("click",func,false);
	menuItem.innerHTML=caption;
	
	menuItems.push(menuItem);
}

function GM_listValues(){
	return false;
}



function rollUp(){
	var i;
	for(i in menuItems){
		setTimeout(function(){itemRollUp(menuItems[i]);},menuDelay*i);
		//i++;
		
	}
	setTimeout(function(){menuBody.style.display="none";},menuDelay*i);
	menuState=false;
}
function dropDown(){
	menuBody.style.display="block";
	menuState=true;
	var i;
	for(i in menuItems){
		setTimeout(function(){itemDropDown(menuItems[i]);},menuDelay*i);
		//i++;
	}
	setTimeout(function(){menuBody.style.display="block";},menuDelay*i);
}
function menuView(){
	
	if(menuState)
		rollUp();
	else 
		dropDown();
		
	console.log("menuState:",menuState);//////////////////////////
}

function makeMenu(){
	
	var menuCss=document.createElement('link');
	menuCss.setAttribute('type', 'text/css');
	menuCss.setAttribute('href', "http://gmapihtml5.googlecode.com/files/gmapi.css");
	menuCss.setAttribute('rel', 'stylesheet');
	document.getElementsByTagName('HEAD')[0].appendChild(menuCss);
	//console.log("styleseet included");//////////////////////////
	
	
	menu=document.createElement('div');
	document.body.appendChild(menu);
	//console.log("menu main div created");//////////////////////////
	
	menu.className="GMMenu";
	menuHeader=document.createElement('div');
	menu.appendChild(menuHeader);
	menuHeader.className="GMMenuHeader";
	//menuHeader.innerHTML="";
	//console.log("menu header created");//////////////////////////
	
	menuBody=document.createElement('div');
	menuBody.className="GMMenuBody";
	menu.appendChild(menuBody);
	menuBody.style.display="none";
	//console.log("menu body created");//////////////////////////
	
	menuHeader.addEventListener("click",menuView,false);
	menuBody.addEventListener("mouseover",itemHighlight,false);
	menuBody.addEventListener("mouseout",itemUnhighlight,false);
	
}

GM_registerMenuCommand("qwerty1",function(){alert(1)});
GM_registerMenuCommand("qwerty2",function(){alert(1)});
GM_registerMenuCommand("qwerty3",function(){alert(1)});
GM_registerMenuCommand("qwerty4",function(){alert(1)});

почему-то раскрывается не плавно, а так: убирается последний элемент (qwerty4), потом сворачивается меню резко
сообщения о появлении/скрытии в консоль файрбага пишутся по таймеру
а само появл.скрытие - не по таймеру
чтобы прочувствовать скопируйте код в консоль файрбага и выполните
потом кликните по обезьяней морде в верху экрана
желательно исполнять в другой вкладке,тк в этой не особо работает
(почему-то башка появляется,только если выполнить на сайтах с простым оформлением ,типа яндекса)

Последний раз редактировалось KOLANICH, 20.06.2010 в 21:52.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу jQuery плагин для создания меню Zeboton jQuery 9 15.09.2014 15:31
анимированное меню на jquery глючит в ie leCadavreExquis jQuery 3 30.12.2009 17:30
Скрипт меню не работает только в Firefox somatic Firefox/Mozilla 2 28.07.2009 03:23
Как "переключать" картинки в меню навигации? KirTer Элементы интерфейса 1 22.06.2009 11:49
Событие mouseout при наведении мыши на пункт меню WalterScott Events/DOM/Window 2 12.05.2009 22:05