master_p: 2 DIVs nebeneinander zum auf- und zuklappen!?

Moin,

ich habe ein Problem mit CSS und Javascript. Und zwar möchte ich zwei DIVs nebeneinander positionieren. Soweit kein Problem. Nun möchte ich aber das linke DIV (Navigation) per Javascript ausblenden können und das rechte DIV (Content) soll dafür über die ganze Breite gehen.

Kann man sowas darstellen, ohne in Javascript die Breite manuell anzupassen? Also ungefährt so:

Vorher:

  
 __________  _________________________  
!          !!                         !  
 ----------  -------------------------  

Nachher:

  
_______________________________________  
!                                     !  
---------------------------------------  

Hat dafür jemand eine Lösung parat?

Gruß aus Hamburg

  1. Hi!

    ich habe ein Problem mit CSS und Javascript. Und zwar möchte ich zwei DIVs nebeneinander positionieren. Soweit kein Problem. Nun möchte ich aber das linke DIV (Navigation) per Javascript ausblenden können und das rechte DIV (Content) soll dafür über die ganze Breite gehen.

    Ich nehme an, das linke DIV ist gefloatet und das rechte nimmt die restliche Breite ein. Dann reicht doch ein einfaches display: none; für des linke DIV.
    LG Ulysses

  2.   
    ...  
    <body onLoad="init()">  
    <div id="naviDiv" style="display:block;">...</div>  
    <div id="contentDiv" style="display:block;">...</siv>  
    </body>  
    
    
      
    function init() {  
     if(document.getElementById("naviDiv").style.display == "none") {  
      document.getElementById("contentDiv").style.width += document.getElementById("naviDiv").style.width;  
      document.getElementById("contentDiv").style.left = document.getElementById("naviDiv").style.left;  
     }  
    }  
    
    

    Beim Neuladen/Laden der Seite wird die Funktion "init" aufgerufen.
    Da du nicht schreibst, wann sich das "NaviDIV" ausbelndet (bei Klick, Laden ect.) habe ich diese Möglichkeit gewählt.

    Sonst musst du halt den "Auslöser" der Funktion anpassen.

    1. function init() {
      if(document.getElementById("naviDiv").style.display == "none") {
        document.getElementById("contentDiv").style.width += document.getElementById("naviDiv").style.width;
        document.getElementById("contentDiv").style.left = document.getElementById("naviDiv").style.left;
      }
      }

        
      Du meinst, ein ausgeblendetes div (display == "none") verrät seine Breite (+= document.getElementById("naviDiv").style.width;) ?  
        
      Wie breit wird es wohl sein?  
        
      Kalle
      
      1. Du meinst, ein ausgeblendetes div (display == "none") verrät seine Breite (+= document.getElementById("naviDiv").style.width;) ?

        Wie breit wird es wohl sein?

        Hast recht :)
        Ich darf raten? 0px ??? :)
        Dann muss man halt vor dem "dipslay:none" die DIV-Breite zwischenspeichern

    2. Da du nicht schreibst, wann sich das "NaviDIV" ausbelndet (bei Klick, Laden ect.) habe ich diese Möglichkeit gewählt.

      Sonst musst du halt den "Auslöser" der Funktion anpassen.

      Ja, danke. Es passiert auf onclick, was ja letztendlich egal ist, wann es aufgerufen wird. Ich hab's jetzt mit Javascript umgesetzt. Schade, ich dachte, dass man sowas irgendwie nur per CSS hinbekommt.

      Ich nehme an, das linke DIV ist gefloatet und das rechte nimmt die restliche Breite ein. Dann reicht doch ein einfaches display: none; für des linke DIV.
      LG Ulysses

      Ja im Prinzip reicht das. Aber nicht, wenn man noch einen Abstand zwischen beiden will etc. Bei meiner Konstellation ging leider nur JS.