Menü

Hallo W-W-W ler,

ich habe da einen Code von Braijar.com
Diesen Code habe ich auf meiner Seite, wo schreibe ich ihn aber nun um, damit das Menü wieder zuklappt, wenn ich mit der Maus die Navigation verlasse?
Vielen Dank und einen noch schönen Frühlingstag
Andreas

#menuBar {
background-color: #c0c0c0;
border: 2px solid;
border-color: #f0f0f0 #808080 #808080 #f0f0f0;
color: #000000;
font-size: 1pt;
padding: 4px 2px 4px 2px;
text-align: left;
width: 80%;
}

a.menuButton, a.menuButtonActive {
background-color: transparent;
border: 1px solid #c0c0c0;
color: #000000;
cursor: default;
font-family: „MS Sans Serif“, Arial, Tahoma, sans-serif;
font-size: 8pt;
font-style: normal;
font-weight: normal;
margin: 1px;
padding: 2px 6px 2px 6px;
position: relative;
left: 0px;
top: 0px;
text-decoration: none;
}

a.menuButton:hover {
background-color: transparent;
border-color: #f0f0f0 #808080 #808080 #f0f0f0;
color: #000000;
}

a.menuButtonActive, a.menuButtonActive:hover {
background-color: #a0a0a0;
border-color: #808080 #f0f0f0 #f0f0f0 #808080;
color: #ffffff;
left: 1px;
top: 1px;
}

.menu {
background-color: #c0c0c0;
border: 2px solid;
border-color: #f0f0f0 #808080 #808080 #f0f0f0;
padding: 0px;
position: absolute;
text-align: left;
visibility: hidden;
}

a.menuItem {
background-color: transparent;
color: #000000;
cursor: default;
display: block;
font-family: „MS Sans Serif“, Arial, Tahoma,sans-serif;
font-size: 8pt;
font-style: normal;
font-weight: normal;
margin: 0px;
padding: 2px;
padding-left: 12px;
padding-right: 16px;
text-decoration: none;
white-space: nowrap;
}

a.menuItem:hover {
background-color: #000080;
color: #ffffff;
}

.menuItemSep {
border-bottom: 1px solid #f0f0f0;
border-top: 1px solid #808080;
margin: 3px 4px 3px 4px;
}

<!-- ---------------------------------------------------- -->
<!-- Menu Bar Demo -->
<!-- -->
<!-- Copyright 2000 by Mike Hall -->
<!-- Please see http://www.brainjar.com for terms of use. -->
<!-- ---------------------------------------------------- -->
// Determine browser and version.

function Browser() {

var ua, s, i;

this.isIE = false; // Internet Explorer
this.isNS = false; // Netscape
this.version = null;

ua = navigator.userAgent;

s = „MSIE“;
if ((i = ua.indexOf(s)) >= 0) {
this.isIE = true;
this.version = parseFloat(ua.substr(i + s.length));
return;
}

s = „Netscape6/“;
if ((i = ua.indexOf(s)) >= 0) {
this.isNS = true;
this.version = parseFloat(ua.substr(i + s.length));
return;
}

// Treat any other „Gecko“ browser as NS 6.1.

s = „Gecko“;
if ((i = ua.indexOf(s)) >= 0) {
this.isNS = true;
this.version = 6.1;
return;
}
}

var browser = new Browser();

// Global variable for tracking the currently active button.

var activeButton = null;

// Capture mouse clicks on the page so any active button can be
// deactivated.

if (browser.isIE)
document.onmousedown = pageMousedown;
if (browser.isNS)
document.addEventListener(„mousedown“, pageMousedown, true);

function pageMousedown(event) {

var el;

// If there is no active menu, exit.

if (!activeButton)
return;

// Find the element that was clicked on.

if (browser.isIE)
el = window.event.srcElement;
if (browser.isNS)
el = (event.target.className ? event.target : event.target.parentNode);

// If the active button was clicked on, exit.

if (el == activeButton)
return;

// If the element clicked on was not a menu button or item, close the
// active menu.

if (el.className != „menuButton“ && el.className != „menuItem“ &&
el.className != „menuItemSep“ && el.className != „menu“)
resetButton(activeButton);
}

function buttonClick(button, menuName) {

// Blur focus from the link to remove that annoying outline.

button.blur();

// Associate the named menu to this button if not already done.

if (!button.menu)
button.menu = document.getElementById(menuName);

// Reset the currently active button, if any.

if (activeButton && activeButton != button)
resetButton(activeButton);

// Toggle the button’s state.

if (button.isDepressed)
resetButton(button);
else
depressButton(button);

return false;
}

function buttonMouseover(button, menuName) {

// If any other button menu is active, deactivate it and activate this one.
// Note: if this button has no menu, leave the active menu alone.

if (activeButton && activeButton != button) {
resetButton(activeButton);
if (menuName)
buttonClick(button, menuName);
}
}

function depressButton(button) {

var w, dw, x, y;

// Change the button’s style class to make it look like it’s depressed.

button.className = „menuButtonActive“;

// For IE, set an explicit width on the first menu item. This will
// cause link hovers to work on all the menu’s items even when the
// cursor is not over the link’s text.

if (browser.isIE && !button.menu.firstChild.style.width) {
w = button.menu.firstChild.offsetWidth;
button.menu.firstChild.style.width = w + „px“;
dw = button.menu.firstChild.offsetWidth - w;
w -= dw;
button.menu.firstChild.style.width = w + „px“;
}

// Position the associated drop down menu under the button and
// show it. Note that the position must be adjusted according to
// browser, styling and positioning.

x = getPageOffsetLeft(button);
y = getPageOffsetTop(button) + button.offsetHeight;
if (browser.isIE) {
x += 2;
y += 2;
}
if (browser.isNS && browser.version < 6.1)
y–;

// Position and show the menu.

button.menu.style.left = x + „px“;
button.menu.style.top = y + „px“;
button.menu.style.visibility = „visible“;

// Set button state and let the world know which button is
// active.

button.isDepressed = true;
activeButton = button;
}

function resetButton(button) {

// Restore the button’s style class.

button.className = „menuButton“;

// Hide the button’s menu.

if (button.menu)
button.menu.style.visibility = „hidden“;

// Set button state and clear active menu global.

button.isDepressed = false;
activeButton = null;
}

function getPageOffsetLeft(el) {

// Return the true x coordinate of an element relative to the page.

return el.offsetLeft + (el.offsetParent ? getPageOffsetLeft(el.offsetParent) : 0);
}

function getPageOffsetTop(el) {

// Return the true y coordinate of an element relative to the page.

return el.offsetTop + (el.offsetParent ? getPageOffsetTop(el.offsetParent) : 0);
}

FileEditViewToolsOptionsHelp

File Menu Item 1
File Menu Item 2
File Menu Item 3

File Menu Item 4
File Menu Item 5

File Menu Item 6

Edit Menu Item 1

Edit Menu Item 2
Edit Menu Item 3
Edit Menu Item 4

Edit Menu Item 5

View Menu Item 1
View Menu Item 2
View Menu Item 3

Tools Menu Item 1
Tools Menu Item 2
Tools Menu Item 3

Tools Menu Item 4
Tools Menu Item 5

Options Menu Item 1
Options Menu Item 2
Options Menu Item 3

Help Menu Item 1
Help Menu Item 2

Help Menu Item 3

Hallo W-W-W ler,

ich habe da einen Code von Braijar.com
Diesen Code habe ich auf meiner Seite, wo schreibe ich ihn
aber nun um, damit das Menü wieder zuklappt, wenn ich mit der
Maus die Navigation verlasse?
Vielen Dank und einen noch schönen Frühlingstag
Andreas

Hallo Andreas,
der Menücode ist recht kompliziert und clever gemacht. Prinzipiell
wird ein geöffnetes Menü wieder geschlossen, wenn irgendwo auf die Internetseite geklickt wird. Das wird mit den Zeilen

if (browser.isIE)
document.onmousedown = pageMousedown;
if (browser.isNS)
document.addEventListener(„mousedown“, pageMousedown, true);

erreicht. Dies bedeutet, die Funktion pageMousedown() wird aufgerufen, wenn irgendwo auf die Internetseite geklickt wird. Prinzipiell wird also mit der Methode pageMouseDown() das aktuell geöffnete Menü wieder geschlossen, wenn den eins offen ist. Es spricht nichts dagegen diese Methode also auch zu eigenen Zwecken zu verwenden.
Du könntest also auf die Hauptmenülinks einen MouseOut Eventhandler legen, der diese Funktion auruft. Jedoch musst du beachten, dass abgefangen werden muss, ob sich der Mauszeiger über dem Dokument befindet oder über dem Untermenü.
Ansonsten wäre das Menü unbrauchbar, da sich das Untermenü schließen würde sobald du den Hauptmenüpunkt mit der Maus verlässt.
Selbst wenn du das hinbekommst wäre die Navigation nicht sehr bequem, da der Benutzer den Mauszeiger vom Hauptmenüpunkt direkt runter übers Untermenü bewegen müsste.
Vielleicht gibt es eine bessere Lösung deine Idee umzusetzen, aber ich finde die Navigation so wie sie ist schon sehr durchdacht und benutzerfreundlich, ich würde sie so lassen.
Viele Grüße

Danke dir für deinen Tipp,
ich werde mal etwas rumexperimentieren.
Viele Grüße Andreas