Philipp Hasenfratz: JavaScript/DHTML Menu

Halihallo Forumer

In JavaScript höre ich mal lieber auf eure Erfahrungsberichte und Wissen. Deshalb würde
ich mir gerne eure Ideen zu folgendem anhören:

Ich muss ein javascript Menü für eine Sitenavigation realisieren, welches in ein
bestehendes Design eingefügt werden soll. Das Menü soll über einen onMouseover eines
Links geöffnet werden können und überdeckt den untenliegenden Content. Bei onMouseout
soll das Menü wieder geschlossen werden. Eine weitere Gliederung (Untermenüs) der
Inhalte der Menükarte ist optional. Das Menü sollte auf allen gängigen (graphischen)
Browsern funktionieren (auch der 4-er Netscape; IE4-6, Opera, Mozilla, NS4-7).
Mich interessiert primär die Umsetzungstechniken: Wie kann ich die Menüs (relativ zum
öffnenden Link) ausrichten (es darf kein Platz für Menüs "vordefiniert" werden, da
dieser von normalem Inhalt benutzt wird und durch öffnen eines Menüs überdeckt werden
soll)? - Welche "Parent-Elemente" benutze ich als Container (div, span, td's, layer)?
Kennt jemand einfache "Beispiele" (überschaubare, sodass ich mich nicht durch tausende
von A4 Seiten Code durchwälzen muss; soviel Zeit möchte ich für dieses Problem nicht
investieren).
Mich würden auch einige Stichwörter für die Suche interessieren, wo dieses Problem u. U.
schon behandelt wurde; ich hatte leider keinen Erfolg (anscheinend verwende ich die
falschen Keywords...).

Viele Grüsse

Philipp

  1. Guck doch mal im SelfHTML 8.0
    Da hat jemand schon eins gemacht. unter DHTML Beispiele oder so

    1. Halihallo "sag i net"

      Guck doch mal im SelfHTML 8.0
      Da hat jemand schon eins gemacht. unter DHTML Beispiele oder so

      Meinst du dieses hier? - http://selfhtml.teamone.de/dhtml/beispiele/navigation.htm
      Gut ist es ja, jedoch beantwortet mir dieses nicht die Frage, wie ich die Elemente
      (div's) _relativ zum Link_ positioniere.

      oder http://aktuell.de.selfhtml.org/artikel/index.htm ? - Dort hab ich zwar auch
      eines gefunden, aber das positioniert ebenfalls nicht...

      Viele Grüsse

      Philipp

  2. Hallo,

    meinst Du vielleicht sowas?
    Hier ein Bsp. von mir!
    http://www.homeplate.de

    Gruß riethmunk

    1. Halihallo riethmunk

      meinst Du vielleicht sowas?
      Hier ein Bsp. von mir!
      http://www.homeplate.de

      jups. Bingo. Das ist etwa das, was ich mir vorstelle. Willst du mir/uns noch sagen, wie
      du dieses umgesetzt hast (s. untere Fragen), oder macht es dir nix aus, wenn ich mir
      deinen Code mal etwas unter die Lupe nehme?
      Mich interessiert die Frage, wie du die aufklappenden Menüs positionierst und mit
      welchen "Techniken" du gearbeitet hast (es scheint soweit ich getestet habe mit allen
      Browsern zu funktionieren).

      Viele Grüsse und danke

      Philipp

      1. Halihallo Philipp

        meinst Du vielleicht sowas?
        Hier ein Bsp. von mir!
        http://www.homeplate.de

        jups. Bingo. Das ist etwa das, was ich mir vorstelle. Willst du mir/uns noch sagen, wie
        du dieses umgesetzt hast (s. untere Fragen), oder macht es dir nix aus, wenn ich mir
        deinen Code mal etwas unter die Lupe nehme?
        Mich interessiert die Frage, wie du die aufklappenden Menüs positionierst und mit
        welchen "Techniken" du gearbeitet hast (es scheint soweit ich getestet habe mit allen
        Browsern zu funktionieren).

        Soweit wie ich den Code nun gesehen habe, arbeitest du mit verstecken von <div>'s. Aber
        noch eine kleine Frage: Wie kriegst du die Dinger an der richtigen Stelle angezeigt? -
        Die Position setzt du gar nirgens (oder hab ich was übersehen?).

        Viele Grüsse

        Philipp

  3. Halihallo nochmals

    [...]
    Erstmal Danke für die Beiträge bisher. Ich habe keine Ahnung wieso, aber irgendwie denke
    ich zu weit oder zu kurz, habe mich nicht genügend informiert und durch SelfHTML
    durchgelesen; was auch immer. Ich finde und finde keine Lösung, wie ich die div's
    richtig positioniere... Keine Ahnung, ich schätze mal, dass es eine ganz einfache Lösung
    gibt und diese mir einfach nicht einfallen will. Ich wäre wirklich froh, wenn mir jemand
    den lange erwarteten Geistesblitz nennen könnte, ich schäme mich ja auch, sowas nicht
    selber fertig zu bringen! *grrrr*
    Bzw: die Positionierung ist vielleicht gar nicht nötig, wenn ich das <div> gleich an der richtigen Stelle einfüge, nur, dann habe ich das Problem, dass es gleich den "Platz" für die "Menücard" reserviert, auch wenn es gar nicht sichtbar ist...

    Viele Grüsse und Danke

    Philipp

    1. Hallo Philipp,

      [...]
      Erstmal Danke für die Beiträge bisher. Ich habe keine Ahnung wieso, aber irgendwie denke ich zu weit oder zu kurz, habe mich nicht genügend informiert und durch SelfHTML durchgelesen;

      So wirds sein ;)

      was auch immer. Ich finde und finde keine Lösung, wie ich die div's richtig positioniere... Keine Ahnung, ich schätze mal, dass es eine ganz einfache Lösung gibt und diese mir einfach nicht einfallen will.

      Einfallen muß nicht sein, wenn man nachschauen kann: http://selfhtml.teamone.de/css/eigenschaften/positionierung.htm

      Ich wäre wirklich froh, wenn mir jemand den lange erwarteten Geistesblitz nennen könnte, ich schäme mich ja auch, sowas nicht selber fertig zu bringen! *grrrr*

      Oki, hier mal das Grundgerüst ohne Schnickschnack zum experimentiern (ist aber DOM wird also _so_ in NS4 und IE5 garantiert nicht funktionieren)

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
      <html>
      <head>
      <title>Menü einblenden</title>

      <style type="text/css">
      #menu {position: absolute; left:150px; top:80px; width:200px; height:100px; border:5px outset red; background-color:orange ;visibility:hidden; z-index:100}
      #steuerung {position: absolute; left:200px; top:100px; padding:5px; border:4px outset gold; background-color:gold; z-index:10;}
      </style>

      <script type="text/javascript">
      function zeigen(name)
      {
       document.getElementById(name).style.visibility = "visible";
      }

      function verbergen(name)
      {
       document.getElementById(name).style.visibility = "hidden";
      }
      </script>
      </head>

      <body>

      <div id="menu" onMouseout="verbergen('menu')">
      Hier steht nun Dein Menü
      </div>

      <div id="steuerung" >
      <p onMouseOver="zeigen('menu')">Zeige Menü</p>
      </div>

      </body>
      </html>

      Ist doch voll easy wa? ;) Probier damit rum, und dann melde Dich wieder wenn's noch Probleme gibt

      Grüße aus Nürnberg,
      HarryS

      1. Halihallo HarryS

        [...]
        Erstmal Danke für die Beiträge bisher. Ich habe keine Ahnung wieso, aber irgendwie denke ich zu weit oder zu kurz, habe mich nicht genügend informiert und durch SelfHTML durchgelesen;
        So wirds sein ;)

        Ufff, dass ich das zu noch hören kriege ;-))

        was auch immer. Ich finde und finde keine Lösung, wie ich die div's richtig positioniere... Keine Ahnung, ich schätze mal, dass es eine ganz einfache Lösung gibt und diese mir einfach nicht einfallen will.
        Einfallen muß nicht sein, wenn man nachschauen kann: http://selfhtml.teamone.de/css/eigenschaften/positionierung.htm

        OK, das kannte ich ja schon; wahrscheinlich bin ich einfach zu dumm um den deutschen
        Text zu verstehen ;)

        Oki, hier mal das Grundgerüst ohne Schnickschnack zum experimentiern (ist aber DOM wird also _so_ in NS4 und IE5 garantiert nicht funktionieren)

        [...]

        Vielen Dank für deine Mühe!
        Also, ich glaube, dass wir hier langsam sehr nah an die Lösung kommen ;)
        Die Menüs sollen nur relativ zum "Menülink" positioniert werden (das lässt sich dann
        wohl einfach über position: relative machen [OK, tested[tm]]); dann ein zIndex das das
        ganze hinter dem Content verschwindet. Heureka!
        Wenn du mich jetzt fragst: Ich habe keine Ahnung, warum mir das nicht vorher eingefallen
        ist [das mit position: relativ und zIndex]... Aber eben, es war da kein Wald vor lauter
        Bäumen mehr zu sehen und du hast mir anscheinend einige davon vor meinem Kopf
        weggesägt ;)

        Ist doch voll easy wa? ;)

        jetzt verstehe ich, warum niemand geantwortet hat: alle meinten, dass ich sie veräppeln
        will, da es wirklich einfach ist ;)

        Probier damit rum, und dann melde Dich wieder wenn's noch Probleme gibt

        Also, die ersten Tests hab ich durch, soweit keine Probleme. Falls dann beim "richtigen
        Design" Probleme auftauchen, lass ich wieder von mir hören.

        Viele Grüsse und Danke für die Baumfällerei ;)

        Philipp

        1. Hallo Philipp,

          Also, ich glaube, dass wir hier langsam sehr nah an die Lösung kommen ;)

          Uff, das freut mich.

          Die Menüs sollen nur relativ zum "Menülink" positioniert werden (das lässt sich dann
          wohl einfach über position: relative machen [OK, tested[tm]]); dann ein zIndex das das
          ganze hinter dem Content verschwindet. Heureka!

          Moooooment, Für das verschwinden- und erscheinenlassen ist primär nicht der z-index sondern das visibility:visible bzw :hidden zuständig.
          Der z-index ist nur für die Staffelung in der z-achse zuständig, also daß der Button eben den Content (der einen z-index kleiner als der Button haben muß) verdeckt, und das per visible erscheinende Menü wiederum Button und Content verdeckt.
          So ich hoffe jetzt sind alle Klarheiten beseitigt ;)

          Viele Grüsse und Danke für die Baumfällerei

          Yeah, meine Kettensäge liegt immer griffbereit *brrmmmbrrrrrmmmmbrrrrrrrrrrmmmm*  :)

          Grüße aus Nürnberg,
          HarryS

          1. Halihallo HarryS

            Moooooment, Für das verschwinden- und erscheinenlassen ist primär nicht der z-index sondern das visibility:visible bzw :hidden zuständig.
            Der z-index ist nur für die Staffelung in der z-achse zuständig, also daß der Button eben den Content (der einen z-index kleiner als der Button haben muß) verdeckt, und das per visible erscheinende Menü wiederum Button und Content verdeckt.
            So ich hoffe jetzt sind alle Klarheiten beseitigt ;)

            Ja, wie könnte ich da wiedersprechen :-)

            Viele Grüsse und Danke für die Baumfällerei
            Yeah, meine Kettensäge liegt immer griffbereit *brrmmmbrrrrrmmmmbrrrrrrrrrrmmmm*  :)

            Ich komme bestimmt wieder darauf zurück :-)
            Das nächste mal mit einer zwei-frame-frage, obwohl ich glaube, dass du dann deine
            Kettensäge für was anderes verwenden wirst und auch sollst :-)

            Nochmals besten Dank für deine Hilfe!

            Viele Grüsse

            Philipp

            1. Hallo Philipp,

              Viele Grüsse und Danke für die Baumfällerei
              Yeah, meine Kettensäge liegt immer griffbereit *brrmmmbrrrrrmmmmbrrrrrrrrrrmmmm*
              Ich komme bestimmt wieder darauf zurück :-)
              Das nächste mal mit einer zwei-frame-frage, obwohl ich glaube, dass du dann deine Kettensäge für was anderes verwenden wirst und auch sollst :-)

              Wuahahaha , das ist echt gut :))))

              Nochmals besten Dank für deine Hilfe!

              Gern geschehen, das war doch mal ein erfreulicher thread.

              Grüße aus Nürnberg,
              HarryS

  4. Halihallo Forumer

    [...]
    Nach genauerer Einsicht des von riethmuk genannten Beispiels, habe ich bemerkt, dass
    auch dort die <div>'s absolut positioniert werden und durch z-Index hinter den Content
    gestellt werden. Da sich bei mir die Page dynamisch der verwendeten Fenstergrösse
    anpasst, ist es nicht möglich die Elemente absolut zu positionieren.
    Meine Frage lautet nach wie vor: Wie kann ich die Elemente relativ zu einem anderen
    positionieren? - Ich stelle mir das so vor, wie mit den layern von NS. An der Stelle, wo
    das Menü erscheinen soll ein <ilayer>, dann ganz unten auf der Seite einen layer, dessen
    Position und z-Index man beim aufrufen des Menüs auf die Position des ilayers setzt und
    ihn sichtbar macht.
    Ich wäre wirklich froh, wenn mir jemand einen Tipp geben könnte, ich scheine einfach
    nicht weiterzukommen!

    Frage: Warum bekomme ich (weiteren) keine Rückmeldungen?
     [ ] du stehst bei mir auf der Ignorier-Liste
     [ ] Thema zu ungenau definiert/erleutert, ich weiss nicht, was du willst
     [ ] Du verstösst gegen die FAQ
     [ ] Das Thema war bereits zu oft diskutiert und steht im Archiv unter [_____________]
     [ ] Es gibt keine Lösung für dieses Problem
     [ ] Ich war noch nie mit dieser Aufgabenstellung konfrontiert worden und weiss einfach
         keine Lösung.
     [ ] Das Thema würde zu weit führen.
     [ ] Zeitverschwendung, besonders bei Rückfragen

    Viele Grüsse

    Philipp

    1. Moin!

      Da sich bei mir die Page dynamisch der verwendeten Fenstergrösse
      anpasst, ist es nicht möglich die Elemente absolut zu positionieren.
      Meine Frage lautet nach wie vor: Wie kann ich die Elemente relativ zu einem anderen
      positionieren?

      Doch, natürlich. Wende folgenden Trick an: Absolute Positionierung bezieht sich immer auf die Koordinaten, die das umgebende, nächsthöhere, absolut oder relativ positionierte Element vorgibt.

      Mit anderen Worten: Elementverschachtelung ist der Schlüssel zum Erfolg.

      Ein Beispiel:

      <div class="hauptmenu">Ich bin ein Hauptmenü</div>

      Dieses DIV kannst du ohne Probleme irgendwo auf der Seite einbauen, so dass es sich dem Seitenfluss anpasst.

      Wenn du es um ein Untermenü erweitern willst, dann füge das Untermenü an geeigneter Stelle ein, nämlich _innerhalb_:

      <div class="hauptmenu">Ich bin ein Hauptmenü
        <div class="submenu" id="sub1">Ich bin ein Submenu<br>Ich bin Punkt 2<br>Ich bin Punkt 3</div>
      </div>

      Soweit, sogut. Wenn du das ohne CSS-Formatierung anguckst, siehst du alles. Sowas kann unerwünscht sein ;-)

      Deshalb formatierst du jetzt ein wenig mit CSS:

      .hauptmenu {
        position:relative; /* Durch relative Positionierung wird das DIV zu einem neuen Container */
        left:0px;
        top:0px; /* Es wird aber nichts verschoben - das ist der Trick */
      }

      .submenu {
        visibility:hidden; /* Alle Submenüs Verstecken */
        position:absolute; /* Submenü absolut positionieren */
        left:10px;
        top:30px;  /* Die Position bezieht sich auf die linke obere Ecke des _Hauptmenüs_ */
      }

      Beachte: Die ID im DIV wird gar nicht verwendet. Du kannst sie heranziehen, um diesem speziellen Untermenü eigene Eigenschaften zu geben - du brauchst sie aber eigentlich nur deshalb, um mit Javascript drauf zuzugreifen und den Layer anzuzeigen.

      Die Positionierung des Submenüs musst du nach eigenen Wünschen vornehmen.

      Netscape 4 kann mit dieser Methode durchaus Probleme machen, der positioniert nicht so gerne relativ, wenn ich es richtig erinnere. Also Vorsicht. Zur Not kannst du die Untermenüs immer noch verstecken - da du ja hoffentlich eine Navigationsalternative anbietest für alle Menschen ohne Javascript, ist das aber kein Beinbruch - es reicht dann, wenn man durch Anklicken des Hauptmenüpunktes zu einer Seite mit den Punkten des Untermenüs gelangt.

      Bedenke auch: Wenn man mit der Maus einen Menüpunkt überfährt und ein Menü ausklappen sieht, ist man veranlaßt, den Hauptmenüpunkt _nicht_ zu klicken! Alle Computermenüs funktionieren so: Der Hauptmenüpunkt ist nur der Anlaß, das Untermenü auszufahren, er hat aber sonst keine Funktion. Deshalb ist es unter Umständen sehr sinnvoll, hinter dem Hauptmenüpunkt _keine_ wichtige Seite zu verstecken, weil die möglicherweise einfach nicht gefunden wird (ist mir schon so berichtet worden!). Meine Idee: Der Hauptmenüpunkt führt zum ersten Punkt des Untermenüs. So kriegen die Leute, die den Hauptmenüpunkt klicken, eine sinnvolle Inhaltsseite, und es kann sich keine Information verstecken.

      Zum Layer-Anzeigen/Verstecken suchst du im Archiv nach "showlayer hidelayer" oder verwendest die Mechanismen der SelfHTML-DHTML-Bibliothek (wenngleich ich bevorzuge, für meine Skripte jeweils genau auf das Problem abgestimmte Skripte zu verwenden, und keine Bibliotheken, die als eierlegende Wollmilchsau meist langsamer sind - Funktionen kopieren geht aber ja auch).

      - Sven Rautenberg

      --
      "Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)
      1. Halihallo Sven

        Da sich bei mir die Page dynamisch der verwendeten Fenstergrösse
        anpasst, ist es nicht möglich die Elemente absolut zu positionieren.
        Meine Frage lautet nach wie vor: Wie kann ich die Elemente relativ zu einem anderen
        positionieren?

        Doch, natürlich. Wende folgenden Trick an: Absolute Positionierung bezieht sich immer auf die Koordinaten, die das umgebende, nächsthöhere, absolut oder relativ positionierte Element vorgibt.

        Mit anderen Worten: Elementverschachtelung ist der Schlüssel zum Erfolg.

        Exakt das wonach ich gesucht habe. Danke vielmals!

        Zum Layer-Anzeigen/Verstecken suchst du im Archiv nach "showlayer hidelayer" oder verwendest die Mechanismen der SelfHTML-DHTML-Bibliothek (wenngleich ich bevorzuge, für meine Skripte jeweils genau auf das Problem abgestimmte Skripte zu verwenden, und keine Bibliotheken, die als eierlegende Wollmilchsau meist langsamer sind - Funktionen kopieren geht aber ja auch).

        Für meinen Charakter ist diese Vorgehensweise nicht akzeptabel (das einfache kopieren
        von Code aus anderen Quellen) ;-)

        ---

        Vielen Dank für deine Ausführungen, sie waren für mich sehr hilfreich, da ich wirklich
        ein Defizit an Wissen in diesem Bereich zu haben scheine. Danke auch für die
        Beschreibung und mögliche Umsetzung der potenziellen Probleme mit NS4 oder nicht JS-User.

        Viele Grüsse

        Philipp

    2. Hi there Philipp,

      Frage: Warum bekomme ich (weiteren) keine Rückmeldungen?

      [x] Man kann nicht mehr alles im Forum lesen und so passiert es, dass man manche Threads nicht liest. Das hat nichts mit dir oder mit deinem Problem zu tun, sonder ein allgemeiner Erscheinung.

      [x] Man dächte, die Frage sei schon beantwortet worden.

      Grüße
      Thomas

      1. Halihallo Thomas

        [x] Man kann nicht mehr alles im Forum lesen und so passiert es, dass man manche Threads nicht liest. Das hat nichts mit dir oder mit deinem Problem zu tun, sonder ein allgemeiner Erscheinung.

        [x] Man dächte, die Frage sei schon beantwortet worden.

        Danke für die Rückmeldung. Deine Antwort leuchtet mir ein und wo du es gleich beim Wort
        nennst: Mir geht es nicht anders. Na, wahrscheinlich liegt mein Problem darin, dass ich
        zuwenige neue Threads eröffne und deshalb nicht daran "gewöhnt" bin, es am "eigenen
        Leibe" zu erfahren ;-)

        An alle: Nocheinmal vielen Dank für eure Hilfe; ich sehe langsam die Zielgerade ;-)
        Wobei, eine grosse Hürde habe ich noch vor mir: Redesign des Codes, der hat's nötig ;-)

        Viele Grüsse

        Philipp

  5. Halihallo zusammen

    Soweit so gut, der Thread ist schon fast Archivreif, aber vorher noch eine Frage:
    Ich hab das Menu soweit angefertigt, ein Beispiel liegt unter
    http://www.emedias.ch/tmp/menutest.html. Ich empfehle den Code nicht anzusehen,
    sowohl mein JavaScript, wie auch der HTML-Code (Rohfassung vom Designer) ist noch nicht
    in der endgültigen Fassung. Diese wird auch noch folgen, aber im Moment hab ich
    leider alle Hände voll zu tun...
    Nu, wie dem auch sei, weiter zu meiner Frage:

    Im NS7 sowie IE4/5 sollte es einwandfrei funktionieren. NS4 wird z. Z. noch nicht
    unterstützt. Aber Opera macht mir noch einige Schwierigkeiten:
    Wenn ihr euch die Seite mal kurz anschaut, wird euch auffallen, dass die Menufelder vom
    unterliegenden Content verdeckt werden. Ich weiss leider noch nicht wieso, zIndex zeigt
    keine Wirkung. Könntet ihr mir sagen, was ich zu tun habe [ich hoffe, dass ihr mit der
    Beschreibung auch schon wisst, woran es liegt, da der Code schon fast nicht mehr
    entzifferbar ist] ?

    Das Menu ist oben rechts, unter dem reinfliegenden Banner. Die Links sind noch nicht
    gesetzt und alle bestehenden sollten ins Nirvana zeigen (ist ja nur ein Test).

    Viele Grüsse

    Philipp

    1. Halihallo

      Im NS7 sowie IE4/5 sollte es einwandfrei funktionieren. NS4 wird z. Z. noch nicht
      unterstützt. Aber Opera macht mir noch einige Schwierigkeiten:
      Wenn ihr euch die Seite mal kurz anschaut, wird euch auffallen, dass die Menufelder vom
      unterliegenden Content verdeckt werden. Ich weiss leider noch nicht wieso, zIndex zeigt
      keine Wirkung. Könntet ihr mir sagen, was ich zu tun habe [ich hoffe, dass ihr mit der
      Beschreibung auch schon wisst, woran es liegt, da der Code schon fast nicht mehr
      entzifferbar ist] ?

      Was mir desweiteren auffällt ist, dass bei dem Netscape 7 der ganze Inhalt (alles mit
      unter den Links in der Mitte zu den einzelnen Accounts) nach unten verschoben wird. Ich
      folgere, dass die <div> - Platzhalter für die Menukarten den Platz "reservieren" und
      somit die Tabelle höher wird (Content nach unten).
      Hierzu noch ein Tipp, vielleicht?

      Viele Grüsse

      Philipp

      1. Halihallo, dieses mal produktiv

        wenn ich euch schon abrate den Code anzusehen oder ich mich zumindest dafür "schäme",
        sollte ich euch vielleicht eine kleine Zusammenfassung mit den wichtigsten Codestellen
        bereitstellen:

        CSS-Properties für div's
           .mainmenu { position: relative; left: 0px; top: 0px }
           .sub_technology { position: absolute; left: -2px; top: 13px; visibility: hidden; }
           .sub_info { position: absolute; left: 98px; top: 13px; visibility: hidden; }
           .sub_banner { position: absolute; left: 158px; top: 13px; visibility: hidden; }
           .sub_preise { position: absolute; left: 261px; top: 13px; visibility: hidden; }
           .sub_hilfe { position: absolute; left: 321px; top: 13px; visibility: hidden; }

        dann kommt eine Tabelle, welche im mainmenu-div liegt.
        Einige Zellen dieser Tabelle enthalten die Links auf die Untermenüs + das eingebettete
        Submenü-div (sub_*). Das sieht dann ungefär so aus:

        <div class="mainmenu" id="mainmenu">
        <table>
           <tr>
              <td>
                 <!-- eine Menüzelle -->
                 <div id="technology" class="sub_technology"
                      onmouseover="overSubMenu();" onmouseout="outSubMenu();">

        <!-- das Submenü -->
                              <table width="84px">
                                <tr>
                                  <td width="100%" bgcolor="#ffffff">
                                    <a href="" class="body"> test </a>
                                    <a href="" class="body"> Dateiformate </a>
                                    <a href="" class="body"> Datenschutz </a>
                                  </td>
                                </tr>
                              </table>
                 </div>
                 <!-- und hier der Link, um das Submenü aufzuklappen -->
                 <a href="/technology/" class="menulink"
                    onmouseover="openMenuTechnology();">
                       test, test
                 </a>
              </td>
           </tr>
        </table>
        </div>

        dann noch etwas JS-Code:
           // wird z. B. von openMenuTechnology, wie im Beispiel oben geöffnet.
           function openMenuCore(el) {
              closeMenus();
              activateMenuTimeout();
              el.visibility = 'visible';
              el.zIndex = 100;
           }
           // overSubMenu und outSubMenu sind irrelevant, da sie lediglich
           // ein Timeout (ent- *g*)setzen...

        Könnt ihr mit dem schon was anfangen im Bezug auf "meine Fragen beantworten"?

        Viele Grüsse

        Philipp

        1. Moin!

          dann kommt eine Tabelle, welche im mainmenu-div liegt.
          Einige Zellen dieser Tabelle enthalten die Links auf die Untermenüs + das eingebettete
          Submenü-div (sub_*). Das sieht dann ungefär so aus:

          Absolut positionierte DIVs in einer Tabelle sind recht böse. Netscape 4 steigt dabei gerne aus. Außerdem ist eine Tabelle IMO hier gar nicht notwendig. Was bringt die eine Tabelle mit einer Spalte mit einer Zelle mit einem DIV drin? Nichts! Man kann auch ohne Tabelle gleich das DIV nehmen.

          Guck dir mal das Menü bei http://www.ivg.de/de/content.html an (diese Seite hat keinen Content, du wirst also nicht abgelenkt ;) - schön untereinander angeordnete Links im Menü, aber nichts, was auch nur irgendwie auf Tabellen hindeutet.

          Ich bin mir nicht sicher, aber ich denke, dass ich bei o.g. Seite dasselbe Problem hatte. Dürfte ganz offensichtlich ein Browser-Bug sein. Gelöst habe ich es dann IIRC so, dass ich das Menü als ganzen Block absolut positioniere (auf der Seite einmal #links und einmal #rechts genannt). Dann geht es jedenfalls.

          - Sven Rautenberg

          --
          "Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)
          1. Halihallo Sven

            Absolut positionierte DIVs in einer Tabelle sind recht böse. Netscape 4 steigt dabei gerne aus. Außerdem ist eine Tabelle IMO hier gar nicht notwendig. Was bringt die eine Tabelle mit einer Spalte mit einer Zelle mit einem DIV drin? Nichts! Man kann auch ohne Tabelle gleich das DIV nehmen.

            Naja, die Tabelle war lediglich ein Beispiel. Bei der im <div> enthaltenen Tabelle für
            die Submenüs gebe ich dir natürlich recht.

            Guck dir mal das Menü bei http://www.ivg.de/de/content.html an (diese Seite hat keinen Content, du wirst also nicht abgelenkt ;) - schön untereinander angeordnete Links im Menü, aber nichts, was auch nur irgendwie auf Tabellen hindeutet.

            Interessante Umsetzung! - Ich hatte einen Denkfehler: Ich war der festen Überzeugung,
            dass <div>'s allgemein (bezogen auf NS) ziemlich böse sind und habe sie somit ein ganzes
            Leben lang gemieden. Ich habe jedoch (wegen euch) meine Positionen diesbezüglich
            überdacht; ich unterlag einem grossen Irrtum. Nun ja, ich habe in diesem Thread schon
            einiges gelernt und werde wohl in Zukunft einiges anders machen ;-)

            Ich bin mir nicht sicher, aber ich denke, dass ich bei o.g. Seite dasselbe Problem hatte. Dürfte ganz offensichtlich ein Browser-Bug sein. Gelöst habe ich es dann IIRC so, dass ich das Menü als ganzen Block absolut positioniere (auf der Seite einmal #links und einmal #rechts genannt). Dann geht es jedenfalls.

            Hmmm. Von welchem Problem sprichst du jetzt eingentlich? - Wegen den Darstellungsfehlern
            im Opera? - div-Probleme im NS (die du oben hingewiesen hast)? - Oder gar dem
            angesprochenen NS7 Problem?

            ---

            Leider kann ich jetzt nicht innerhalb kurzer Zeit die ganze Site überarbeiten, aber
            ich werde mir den Thread im Gedächtnis halten und zu gegebener Zeit wieder hervorrufen.

            Viele Grüsse und Danke

            Philipp