Conny: Aufklappmenue im Frameset

Hallo Leute,

Ostereier verdaut, auf zu den nächsten Fragen. :-)

Ich hatte in einem Frameset ein Aufklappmenü angelegt, und zwar im oberen Frame das Hauptmenü und wenn man mit der Maus über die Punkte fährt, wird im mittleren Frame jeweils die entsprechende Menüebene eingeblendet. Diese Untermenüs liegen auf Ebenen und sind absolut positioniert.

Das Problem war, dass bei gescrollter Seite die Untermenüs nicht zu sehen sind, da sie ja irgenwo weiter oben eingeblendet werden. Ich half mir damals mit einem Anker, den ich immer oben auf den Seiten anlegte, und bei dem Mousover wurde dann gesagt, dass er da oben hinspringen soll. Aber das ist natürlich nicht gar so prall.

Im Zuge der allgemeinen Fehlerbehebung auf den Seiten würde ich das gerne beheben, habe aber keine Idee, wo ich ansetzen muss. Was empfehlt ihr? Außer Frameset und Javascript wegwerfen. ;-)

Gruß,
Conny

  1. Hallo Conny,

    sieh bitte unter http://aktuell.de.selfhtml.org/tippstricks/dhtml/framemenu/index.htm nach, ob Dir das hilft.

    Gruß aus Berlin!
    eddi

    1. Hi eddi,

      sieh bitte unter [...] nach, ob Dir das hilft.

      Auf den ersten Blick sieht das genau richtig aus. Dank dir!

      Conny

  2. Conny,

    Was empfehlt ihr? Außer Frameset und Javascript wegwerfen. ;-)

    Das „Außer“ wegwerfen.
    Gunnar

    --
    I never intended HTML source code (the stuff with the angle brackets) to be seen by users. […] To my surprise, people quickly became familiar with the tags and started writing their own HTML documents directly. (Tim Berners-Lee in Weaving the Web)
  3. Hallo Conny,

    für Dein Problem gibt es mehrere Lösungen:

    1. Auf frames verzichten, aber das willst Du offenbar nicht.
    2. Die Scrollfunktion vom body nehmen und an ein Inhaltsdiv geben:
    body, html {overflow:hidden; margin:0; padding:0; border:0;}
    div#inhalt {position:absolute; top:0; left:0; width:100%; height:100%; overflow:auto;}
    Dann kannst Du Deine Ebenen (außerhalb von #inhalt) absolut positionieren und sie bleiben an der richtigen Stelle.
    3. Die eleganteste Lösung (funktioniert allerdings nur in richtigen Browsern - sprich denen mit Gecko-engine): Du bindest mittels XBL ein XUL popupmenue ein. Dies sähe so aus, daß Du einem Element im oberen Frame anonymen Inhalt zuweist mit CSS:
    selector {-moz-binding:url(filename.xml#id);}
    Das Menue könnte ddann so aussehen:
             xul:menulist

    xul:menupopup

    <xul:menuitem label="..." value="..." selected="true"/>

    <xul:menuitem label="..." value="..."/>

    <xul:menuitem label="..." value="..."/>

    <xul:menuitem label="..." value="..."/>

    <xul:menuitem label="..." value="..."/>

    <xul:menuitem label="..." value="..."/>

    <xul:menuitem label="..." value="..."/>

    <xul:menuitem label="..." value="..."/>

    </xul:menupopup>

    </xul:menulist>

    Aktionen fügst Du über einen Handler hinzu:

    <handlers>

    <handler event="command">

    JavaScript-Anweisungen

    </handler>

    </handlers>

    Genauere Beschreibungen findest Du unter:
    http://www.xulplanet.com

    MfG
    Klaus

    1. Hallo Klaus,

      1. Auf frames verzichten, aber das willst Du offenbar nicht.

      Wenn es ein völlig neuer Webauftritt wäre, würde ich ihn sicherlich ohne Frames gestalten. Diesen hier gibt es aber schon seit über einem Jahr und die Geschäftsführer des Unternehmens wären nicht erfreut, wenn ich rein optisch etwas veränderte. Momentan ist er so aufgebaut, dass er oben und unten einen festen Streifen hat, die müssen halt bleiben. Ich habe im Hinterkopf, das irgenwann eventuell mit i-frames zu lösen, aber damit muss ich mich erst noch mal näher beschäftigen. Vorerst versuche ich die ganzen Fehler zu sieben und vor allem diese Massen an unnötigen CSS-Angaben zu filtern.

      1. Die Scrollfunktion vom body nehmen und an ein Inhaltsdiv geben: [...]

      Das werde ich mir etwas genauer anschauen, danke.

      1. Die eleganteste Lösung (funktioniert allerdings nur in richtigen Browsern [...]

      Wenn es nur eingeschränkt funktioniert, ist das nichts. Auf den ersten Blick sah das auch noch etwas über meinem Horizont schwebend aus. :-)

      Conny

      1. Hallo Conny,

        1. Die Scrollfunktion vom body nehmen und an ein Inhaltsdiv geben: [...]

        Das werde ich mir etwas genauer anschauen, danke.

        Diese Methode kannst Du natürlich auch als Ersatz für Frames nutzen (auch iframes sind unnötig). Such mal im Archiv, da hatte ich mal vor längerer Zeit etwas dazu geschrieben.

        MfG
        Klaus