Seltsames bei NN6.2, mouseover auf einem div....
Markus Till
- dhtml
Hallo zusammen!
Leider habe ich weder im Tutorial, im Forum und auch im Web keine Antwort auf mein Problem gefunden. Also hoffe ich, dass mir hier jemand weiterhelfen kann.
Ich hab da ein ganz seltsames Problem mit dem Netscape Navigator 6.21 (vermutlich gibt's dasselbe Problem aber auch bei den älteren Versionen >6).
Ich hab ein Dropdown-Menü geschrieben, bei dem beim Überfahren eines Hauptmeüpunktes ein div-Layer mit den Sub-Links per Visibility ein bzw. ausgeblendet wird. Diese Sub-Layer liegen dabei größtenteils über dem definierten Haupttextfeld. Beim IE funzt das alles wunderbar. Nur der NN 6.21 macht Probleme. Beim Überfahren des Hauptmenüpunktes funktioniert noch alles ganz normal: der Layer wird angezeigt. Beim Überfahren des nun angezeigten Untermenüs mit den SubLinks geschieht dann aber etwas Sseltsames, das ich mir nicht erklären kann. Bei den ersten zwei Links, die noch nicht über dem Haupttextfeld liegen, funktioniert das Menü noch. Sobald ich aber auf dem Layer mit den SubLinks (der per z-Index über dem Haupttextfeld liegt) über das Haupttextfeld komme, wird der Layer mit den SubLinks ausgeblendet.
Sehr konfus, ich weiß..... so konfus wie ich gerade.....
Schaut's euch am besten mal an:
http://www.blaufaerber.de/forum/forum.htm
... und fahrt über alle Links des Layers mit den SubLinks!!!
Hat mir dafür vielleicht irgendjemand eine Erklärung?
Viele Grüße
Markus
guten Abend,
mach einfach mal
#subFarbe { POSITION: absolute; left:195px; top:50px;
^^^^^^^^^
statt (wie du es jetzt hast)
#subFarbe { POSITION: absolute; left:195px; top:118px;
dann klappt dein Menü "nach oben" auf, die Layer überlappen sich nicht, und Platz genug hast du dafür auch.
z-index:99 ist vielleicht auch bissel hoch, 5 könnte ausreichen
Wo Netscape nun genau diese Probleme mit einander überlappenden Layern hat, ist mir auch nicht ganz klar. Möglicherweise liegt es an deinem Browser-Check. Außerdem scheint Netscape im <style>-Bereich in deinem Header großen Wert darauf zu legen, in welcher Reihenfolge dort deine späteren Layer formatiert werden.
Christoph S.
guten Abend,
mach einfach mal
#subFarbe { POSITION: absolute; left:195px; top:50px;
^^^^^^^^^
statt (wie du es jetzt hast)
#subFarbe { POSITION: absolute; left:195px; top:118px;
dann klappt dein Menü "nach oben" auf, die Layer überlappen sich nicht, und Platz genug hast du dafür auch.
Eigentlich ist das nur ein Teil einer ganzen Seite und daher geht das mit dem nach oben aufklappen lassen leider auch nicht. Den Browsercheck hab ich einfach per cut'n past aus einer älteren Seite von mir reinkopiert. Sieht vielleicht etwas wild aus, aber letztendlich verwendet werden ja nur die Parameter isIE, isDOM und IsNav4, die alle auf einer Objekt-Abfrage beruhen.....also auch nix wildes. Ich vermute mal, dass da wirklich der Netscape das Problem ist. Die meisten Muster-Scripts, die man im Netz findet, bestehen meist nur aus dem Menü.....dann würde es bei mir auch funktionieren. Aber sobald ein Layer unter dem Anzeigebereich des Menüs liegt scheint's nicht mehr zu funktionieren.
Hab ich da jetzt Pech gehabt, oder kennt vielleicht doch jemand ein Lösung?!?!
Viele Grüße
Markus
hi,
Hab ich da jetzt Pech gehabt, oder kennt vielleicht doch jemand ein Lösung?!?!
es gibt da eher ein grundsaetzliches Problem: faehrt die Maus ueber ein Element innerhalb des Divs feuert Mauseout - und jeh nach Browser passiert unterschiedliches. Dein Script beruecksichtigt das nicht.
Bei solchen Sachen kann man entweder mit Dummy-Divs arbeiten, die, daruebergelegt, ausschliesslich zur Eventregistrierung dienen, oder man ueberwacht permanent die Mousebewegung und prueft so, ob sich die Mouse noch innerhalb des Divs befindet.
Einen Test zu letzterem findest Du hier:
http://www.wendenburg.de/test/divNaviStat.html
Dabei sind allerdings nur "normale" Links in dem Div enthalten.
hth + Gruss Joachim
hallo nochmal,
Hab ich da jetzt Pech gehabt, oder kennt vielleicht doch jemand ein Lösung?!?!
Ich habe nochmal bißchen an deinem Code die Einzelteile hin- und hergeschoben. Es hat sich gezeigt, daß meine Vermutung "Außerdem scheint Netscape im <style>-Bereich in deinem Header großen Wert darauf zu legen, in welcher Reihenfolge dort deine späteren Layer formatiert werden" richtig war. Wenn du im Header die style-Angaben in dieser Reihenfolge machst
#subFarbe { position: absolute; left:195px; top:118px; visibility:hidden; width: 100px; height:100px; BACKGROUND-COLOR:#7C818C; text-align:center; padding:0px; z-Index:99;}
#farbDiv { position: absolute; left:195px; top:100px; visibility:visible; width: 100px; height:18px; BACKGROUND-COLOR:#740320; text-align:center; padding:0px; z-Index:99;}
#mainText {position:absolute; left:180px; top:150px; width:581px; height:300px; z-Index:4; margin:0px; padding:0px; visibility:visible; border-width:0px; border-color:#c0c7d3; border-style:solid; BACKGROUND-COLOR:#f3f4f8; overflow:auto; z-Index:3;}
erhältst du den gewünschten Effekt. Der Layer, der "darunter" liegen bleiben soll, muß offenbar als letzter in dieser Reihenfolge beschrieben werden.
Christoph S.