Stephan Huber: Relative Layerpositionierung in NN

Hi,
ich versuche ein Dropdownmenue zu schreiben,
dass mit IE & NS4 funktioniert. Das Problem ist, daß ich aufgrund der Gestaltung der Seiten keine absolute Positionierung benutzen kann, sondern die Position des Menues muss sich auf ein HTML-Element in der Seite beziehen. Ich habe das durch verschachtelte layers (<div>) geloest, so dass ein absolut positionierter Layer an der entsprechenden Stelle in der Seite eingefuegt ist, dem ein relativ positionierter folgt. Das Ganze funktioniert im IE sehr gut, nur NN macht Probleme - die Menues werden zwar dargestellt, aber Text in den Menues nicht, und anscheinend ist dass ein Bug in NN - denn wenn ich das Browserfenster 'resize', dann wird der Layer mit Text dargestellt, aber an der falschen Stelle, und NN stuerzt manchmal ab, wie ich gerade feststellen musste :-(. Ich kann auch nicht eine zweite Version mit NN's <layer>-tag schreiben, weil mit dem anscheinend die relative Positionierung in Relation zu einem HTML-Element nicht so funktioniert, wie ich es braeuchte. Weiss irgendwer, wie ich dieses Problem umgehen kann?

(Code fuer die Layers unten)

Danke,
Stephan

die Layers:
<DIV ID="button1" class="normal">
<DIV ID="menu1" class="menu">
<A href="start.html">Deutsch</A><BR>
<A href="../engl/start.html">Englisch</A>
</DIV>
</DIV>

die dazugehoerigen Stylesheets:
  .menu {position:absolute;
         visibility:hidden;
         background-color: #6699CC;
         layer-background-color: #6699CC;
         top:-5;
         width:230;
         color: white;
         border-style: solid;
         border-color: white;
         border-width: 2px;
         border-top-width: 0px;
         padding: 2px;
         font-size : 11px;
         font-family: arial,helvetica;
         font-weight: bold;}
  .menu A {color: white;text-decoration:none;}
  .normal {position:relative;
         visibility:visible;
         vertical-align:top;
         margin:0;

  1. Hallo Stephan,

    Das Ganze funktioniert im IE sehr gut, nur NN macht Probleme - die Menues werden zwar dargestellt, aber Text in den Menues nicht, und anscheinend ist dass ein Bug in NN - denn wenn ich das Browserfenster 'resize', dann wird der Layer mit Text dargestellt, aber an der falschen Stelle, und NN stuerzt manchmal ab, wie ich gerade feststellen musste :-(.

    Da kannst Du sonst programmieren so viel Du willst - das Problem mit Netscape, Layern und dem Verhalten des Browsers, wenn man die Fenstergroesse veraendert, ist nicht neu. So weit mir bekannt ist da auch nix zu machen - ausser, man steckt das ganze in ein in der Groesse nicht veraenderbares Zweitfenster oder Framefenster.

    viele Gruesse
      Stefan Muenz

    1. Hallo Stefan,

      danke für die Antwort, aber das mit dem Resize wäre nicht so schlimm, denn es gibt anscheinend eine Möglichkeit, das Problem mit einem Javascript zu umgehen (gibts bei Netscape Developer).
      Warum ich das resize erwähnt habe, ist, daß nach dem resize der Text im Layer dargestellt
      wird, und vorher nicht...
      Vielleicht probierr ich es mal mit Bildern im Layer für Netscape...

      Viele Grüße
      Stephan Huber

      1. Hallo,

        danke für die Antwort, aber das mit dem Resize wäre nicht so schlimm, denn es gibt anscheinend eine Möglichkeit, das Problem mit einem Javascript zu umgehen

        Ja, das ist machbar, nicht wirklich problematisch.

        Warum ich das resize erwähnt habe, ist, daß nach dem resize der Text im Layer dargestellt
        wird, und vorher nicht...

        Kann man das irgendwo mal angucken?
        Ich kann mr sowas immer so schwer vorstellen <g>

        Christine

        1. Hi Christine,

          mmh, ich habe zwei Testversionen hochgeladen, aber ein kurzes Proviso:

          • man sollte nicht versuchen, auf eine der anderen Seiten zu gelangen, um dort
            das gleiche zu sehen, da hagelts Javascript-Fehler, weil ich das Init() noch
            nicht im body-tag habe
          • !! ich habe das Problem "gelöst", deshalb zwei Versionen:
            http://analogon.com/nanotec/de/start.html
            http://analogon.com/nanotec/dropdowntest/start.html
            die erste Version zeigt auch im NN4 unter den Punkten "Startseite" und
            "Produkte" das Dropdownmenü (dummerweise etwas höher als in IE, aber das kann
            man noch beheben...), die zweite (ursprüngliche) Version zeigt nur schmale Balken.
            Und die Lösung: ich habe einige Angaben im Stylesheet für den inneren Layer
            gelöscht, die eigentlich mit der Textanzeige nichts zu tun haben sollten (Border, usw.),
            und seitdem funktioniert es. (es kann auch nicht direkt an diesen Stylesheet-Angaben gelegen
            haben, wegen der Anzeige des Textes nach einem Resize im zweiten Beispiel)

          Viele Gruesse
          Stephan

          P.S. meine NNVersion: 4.05d

          1. Hallo,

            • !! ich habe das Problem "gelöst", deshalb zwei Versionen:
              http://analogon.com/nanotec/de/start.html
              http://analogon.com/nanotec/dropdowntest/start.html
              Und die Lösung: ich habe einige Angaben im Stylesheet für den inneren Layer
              gelöscht, die eigentlich mit der Textanzeige nichts zu tun haben sollten (Border, usw.),
              und seitdem funktioniert es. (es kann auch nicht direkt an diesen Stylesheet-Angaben gelegen
              haben, wegen der Anzeige des Textes nach einem Resize im zweiten Beispiel)

            Doch, ich glaube trotzdem, dass die Border-Angabe verantwortlich ist.
            Irgendwann habe ich auch mal damit gekaempft. Man vergisst am Ende nur die Einzelheiten, was womit ging oder nicht ging bei so fuerchterlichen unlogischen Rumprobierereien.
            Resize ueberstehen bei mir (Win95) weder Navi4.04 noch 4.07, quittieren beide hartnaeckig mit Absturz, allerdings nur in der Version, die die Menues nicht richtig zeigt.
            Dass  das Resize-Verhalten, ob nun meins oder Deins, anders ist als das beim Laden, kann damit zusammenhaengen, dass Du die Teile per document.write() generierst, der Code wird bei Resize wohl nicht nochmal abgearbeitet, also nur neu positioniert, vermute ich.
            BTW: Warum eigentlich document.write()? Ich habe keinen Grund dafuer erkannt.
            Was uebersehen?
            Ich vermeide sowas nach Moeglichkeit. Navis sind mir zu empfindlich, wenn bei dabei CSS im Spiel sind.

            Christine

            P.S. meine NNVersion: 4.05d