@Carsten, Hvis du floater en div, så får den ikke automatisk 100%'s bredde som divs ellers har uden defineret width (grundet display: block; og width: auto; som default). Når du floater din div, så får den den bredde, som dens indhold har - med mindre du definerer en bredde. Håber du kan følge mig.
@Jonas width:auto på din #midt betyder, på grund af det jeg forklarede Carsten oven for, at den ikke fylder noget hvis der ikke er noget indhold. Hvis du sætter width: 100%; så fylder den det hele - det samme hvis du ikke floater den.
En alternativ måde at løse det på er ved at ændre din struktur til:
- <div id="midt">
- <div id="venstre"></div>
-
- <div id="hoejre"></div>
- </div>
- #midt { position: relative; margin: 0 3px; height: 50px; }
- #venstre, #hoejre { position: absolute; top: 0; bottom: 0; right: auto; left: -3px; width: 3px; }
- #hoejre { left: auto; right: -3px; }
Det burde løse dit problem. Vi placerer #venstre og #hoejre hhv -3px til venstre eller til højre for #midt, som har margin 3px på begge sider. Ved at have dem inden i #midt, kan vi placere dem i forhold til #midt ved at bruge position: absolute; når position: relative; er sat på #midt.
Der har du den praktiske måde at løse problemet på - men hvorfor du gør det på den her måde er mig en gåde. Hvorfor ikke bruge enten pseudo-elements eller bare en border?
Du kan ikke have noget vigtigt indhold som kræver 3 pixels bredde. Og hvis det er billeder du vil have sat på hver side kan du bruge pseudo elements, som kan placeres med samme teknik som jeg bruger i mit eksempel oven for - eller hvis det bare er en farvet kant du vil have, så er det bedre at løse det med border-left og border-right...
Generelt skal man holde sig fra at tilføje unødvendige elementer til sin html - så hvis der ikke er indhold i elementet, så bør det ikke være der. Det er derfor jeg stiller spørgsmålet, om de alternative løsninger.