<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl"> <head> <meta http-equiv="Content-type" content="application/xhtml+xml; charset=utf-8" /> <link rel="stylesheet" href="jsMenu.css " type="text/css" /> </head> <body> <div id="menu-1" class="menu"> </div> <div id="menu-2" class="menu"> <div id="menu-2-1" class="menu"> </div> <div id="menu-2-2" class="menu"> </div> </div> <div id="menu-3" class="menu"> <div id="menu-3-1" class="menu"> <div id="menu-3-1-1" class="menu"> </div> </div> </div> <br /> <br /> <div class="topMenu"> </div> </body> </html>
Kod
$ = function (id)
{
return document.getElementById(id);
}
window.onload = function ()
{
getMenu();
}
getMenu = function (subMenu)
{
if (!subMenu)
{
var subMenu = '';
}
subMenu += '-';
var menuiD = 1, topMenu, menu;
while (subMenu)
{
topMenu = $('topMenu' +subMenu +menuiD);
menu = $('menu' +subMenu +menuiD);
if (topMenu && menu)
{
getMenu(subMenu +menuiD);
setMenu(topMenu, menu);
}
else
{
break;
}
menuiD++;
}
}
setMenu = function (topMenu, menu)
{
var subMenu = /^menu-\d-/.test(menu.id);
topMenuFuncrion = function () {setMenuPosition(topMenu, menu, subMenu); showMenu(menu, true)};
subMenu ? topMenu.onmouseover = topMenuFuncrion : topMenu.onclick = topMenuFuncrion;
topMenu.onmouseout = function () {showMenu(menu, false)};
menu.onmouseover = function () {showMenu(menu, true)};
menu.onmouseout = function () {/*showMenu(menu, false)*/};
}
setMenuPosition = function (topMenu, menu, subMenu)
{
menu.style.top = topMenu.offsetTop + (subMenu ? 0 : topMenu.offsetHeight) + 'px';
menu.style.left = topMenu.offsetLeft + (subMenu ? topMenu.offsetWidth : 0) + 'px';
}
showMenu = function (menu, show)
{
menu.style.display = show ? 'block' : 'none';
}
{
return document.getElementById(id);
}
window.onload = function ()
{
getMenu();
}
getMenu = function (subMenu)
{
if (!subMenu)
{
var subMenu = '';
}
subMenu += '-';
var menuiD = 1, topMenu, menu;
while (subMenu)
{
topMenu = $('topMenu' +subMenu +menuiD);
menu = $('menu' +subMenu +menuiD);
if (topMenu && menu)
{
getMenu(subMenu +menuiD);
setMenu(topMenu, menu);
}
else
{
break;
}
menuiD++;
}
}
setMenu = function (topMenu, menu)
{
var subMenu = /^menu-\d-/.test(menu.id);
topMenuFuncrion = function () {setMenuPosition(topMenu, menu, subMenu); showMenu(menu, true)};
subMenu ? topMenu.onmouseover = topMenuFuncrion : topMenu.onclick = topMenuFuncrion;
topMenu.onmouseout = function () {showMenu(menu, false)};
menu.onmouseover = function () {showMenu(menu, true)};
menu.onmouseout = function () {/*showMenu(menu, false)*/};
}
setMenuPosition = function (topMenu, menu, subMenu)
{
menu.style.top = topMenu.offsetTop + (subMenu ? 0 : topMenu.offsetHeight) + 'px';
menu.style.left = topMenu.offsetLeft + (subMenu ? topMenu.offsetWidth : 0) + 'px';
}
showMenu = function (menu, show)
{
menu.style.display = show ? 'block' : 'none';
}
Kod
body {margin: 5px; padding: 0; font-family: verdana, tahoma, arial, sans-serif; font-size: 12px;}
.menu, .topMenu {font-size: 12px; color: #000000; background-color: #f9f9f9; border: #000000 1px solid; white-space: nowrap;}
.menu a, .topMenu a {color: #000000; text-decoration: none}
.menu a:hover, .topMenu a:hover {background-color: #afcbe7; text-decoration: none;}
.menu {display: none; position: absolute}
.menu a {display: block; padding-right: 20px;}
.menu a #arrow {font-weight: bold; position: absolute; right: 5px}
.menu, .topMenu {font-size: 12px; color: #000000; background-color: #f9f9f9; border: #000000 1px solid; white-space: nowrap;}
.menu a, .topMenu a {color: #000000; text-decoration: none}
.menu a:hover, .topMenu a:hover {background-color: #afcbe7; text-decoration: none;}
.menu {display: none; position: absolute}
.menu a {display: block; padding-right: 20px;}
.menu a #arrow {font-weight: bold; position: absolute; right: 5px}
Napisałem taki skrypt który wyswietla menu - a raczej powinien. Chodzi i zakomentowana czesc ze skryptu js dotyczaca akcji onmouseout. Po usunieciu komentarzy skrypt nie chce ustawic blokow w odpowiednim miejscu. Zreszta zobaczcie sami zakomentowaną werjse i i niezakomentowaną.
Co jest nie tak?