K
K.Beutler
Guest
Hallo,
ich arbeite gerade an der Menüleiste meines Programms und die Darstellung, das Aufklappen beim Hover sowie die Hover-Effekte funktionieren alle super!
Hier kurz der CSS-Code:
Der Knackpunkt ist der HOVER-Effekt, der die verschachtelten Listen anzeigen lässt ("display:block").
Wenn ich in meinem Script das gewählte Listen-Item per onClick --> JavaScript-Funktion abfangen und bearbeiten will, soll die Navigation natürlich sofort nach dem Klick-Event wieder schließen --> das manage ich dann per JS :
Das Problem ist nur, dass ich damit irgendwie die CSS-Eigenschaften für dieses Element für immer überschreibe, sprich beim nächsten HOVER wird die verschachtelte Liste nicht mehr ausgeklappt ("display:block")... Woran liegt das bzw. wie kann ich dem Abhilfe schaffen? Es wäre wirklich sehr mühseelig, alles per JS nochmal zu definieren und dann nur noch mit JS-Events (onMouseOver/onMouseOut) zu arbeiten....
Gibts da ne Lösung?
EDIT:
Habe das Problem selbst gefunden. Bei der Style-Manipulation via JS werden die neuen Styles eben direkt ins HTML-Element-Tag importiert und überschreiben somit logischerweise alle untergeordneten CSS-Blöcke...
Ich löse das Problem nun durch Manipulation der Listen-Klasse, indem ich eine Klasse "expand" definiere und beim MouseOver-Event jeder Unterliste diese Klasse zuordne.. Ist nicht die schönste Art und Weise, aber offensichtlich effektiv.
Was mir dabei jedoch aufgefallen ist ist ein nerviges Flackern des Cursors zwischen Default und Pointer, während ich die Maus über das expandierte Element bewege, solange ich gleichzeitig ein MouseOut-Event verwende, welche die "expand"-Klasse wieder entfernt...
Kann man das irgendwie beheben?
ich arbeite gerade an der Menüleiste meines Programms und die Darstellung, das Aufklappen beim Hover sowie die Hover-Effekte funktionieren alle super!
Hier kurz der CSS-Code:
Code:
#gui_menu
{
position:absolute;
top: 0;
left:0;
z-index:2;
width:auto;
height:25px;
background-color:#1B1B1B;
overflow:visible;
}
#gui_menu ul
{
text-align:center;
list-style:none;
height:100%;
}
#gui_menu ul li.group_item
{
float:left;
border:1px solid green;
}
#gui_menu ul li
{
position:relative;
height:15px;
font-weight:bold;
font-size:0.9em;
padding:5px 10px;
cursor: pointer;
}
#gui_menu ul li:hover
{
background-color:#555;
}
#gui_menu ul li ul
{
position: absolute;
top:25px;
left:0;
width:150px;
display:none;
text-align:left;
}
#gui_menu ul li:hover ul
{
display:block;
}
#gui_menu ul li ul li
{
background:#555;
display:block;
}
#gui_menu ul li ul li:hover
{
background-color:#666;
}
#gui_menu a
{
text-decoration:none;
color: #FFFFFF;
}
Wenn ich in meinem Script das gewählte Listen-Item per onClick --> JavaScript-Funktion abfangen und bearbeiten will, soll die Navigation natürlich sofort nach dem Klick-Event wieder schließen --> das manage ich dann per JS :
Code:
element.style.display = "none";
Das Problem ist nur, dass ich damit irgendwie die CSS-Eigenschaften für dieses Element für immer überschreibe, sprich beim nächsten HOVER wird die verschachtelte Liste nicht mehr ausgeklappt ("display:block")... Woran liegt das bzw. wie kann ich dem Abhilfe schaffen? Es wäre wirklich sehr mühseelig, alles per JS nochmal zu definieren und dann nur noch mit JS-Events (onMouseOver/onMouseOut) zu arbeiten....
Gibts da ne Lösung?
EDIT:
Habe das Problem selbst gefunden. Bei der Style-Manipulation via JS werden die neuen Styles eben direkt ins HTML-Element-Tag importiert und überschreiben somit logischerweise alle untergeordneten CSS-Blöcke...
Ich löse das Problem nun durch Manipulation der Listen-Klasse, indem ich eine Klasse "expand" definiere und beim MouseOver-Event jeder Unterliste diese Klasse zuordne.. Ist nicht die schönste Art und Weise, aber offensichtlich effektiv.
Was mir dabei jedoch aufgefallen ist ist ein nerviges Flackern des Cursors zwischen Default und Pointer, während ich die Maus über das expandierte Element bewege, solange ich gleichzeitig ein MouseOut-Event verwende, welche die "expand"-Klasse wieder entfernt...
Kann man das irgendwie beheben?
Zuletzt bearbeitet von einem Moderator: