Avatar billede thoko Nybegynder
06. januar 2009 - 19:34 Der er 2 kommentarer

CSS-opsætning af side

Mellem header foroven og footer forneden har jeg placeret følgende:
<div> id="content">
  <div id="kolonne"> </div>
  <div id="broed"> </div>
  <div class="floatstop"> </div>
</div>

#content {
width: "100%;}

#menu {
width: 155px;
float: left;}

#broed {
width: 80%;
float: left;
}

.floatstop {
clear: both;}

Når jeg forøger broed-width til over 85% eller reducerer bredden på browservinduet med 2-300 pixel flyder venstre side af broed-feltet til venstre og starter langs venstre side af browservinduet.

Hvordan sikrer jeg, at venstre side af broed-feltet bliver hvor det skal være uden at glide til venstre???
Avatar billede olebole Juniormester
06. januar 2009 - 22:42 #1
<ole>

Browseren forstår ikke, hvad du vil - og det er der nok heller ikke andre, der gør.

Du er nødt til at mene det, du fortæller browseren, den skal gøre. Det nytter ikke, du fortæller browseren, hvor brede elementerne skal være, når du ikke mener det alligevel  =)

/mvh
</bole>
Avatar billede bjoarn Nybegynder
07. januar 2009 - 12:44 #2
Jeg går ud fra at det du ønsker er et 2 column layout, hvor én er med fast bredde og én med variable bredde.

Sådan du har beskrevet det overfor, vil bredden af de to columns blive bredere end den tilgængelige vinduesbredde hvis [vinduesbredden minus 155px er større 80% af vinduesbredden], og det sker som du beskriver når man gør vinduet mindre.

Layout med float property'en virker (så vidt jeg ved) kun hvis man enten holder sig til faste bredde værdier eller til variable værdier, men ikke i kombination.

En måde man kan kombinere faste og variable størrelser er ved bruge position property'en.

<div id="content">
  <div id="kolonne"> </div>
  <div id="broed"> </div>
</div>

#content {
position: relative;
}

#kolonne {
position: absolute;
width: 155px;
top: 0;
left: 0;
}

#broed {
position: relative;
margin-left:155px;
}

#kolonne bliver med position:absolute hevet ud af det normale contentflow, de andre elementer ignorerer den og vil potentielt lægge sig under dette element i designet. Derfor tilføjer med kolonnens bredde som margin i #broed.

#content skal have position:relative, da det er parent-element til #kolonne. Dermed bliver #content det nulpunkt som det flydende #kolonne retter sig efter (pga. position:absolute), med henholdsvis top:0 og left:0.

Det er også smart at give #broed position:relative, hvis man inde i #broed elementet vil benytte position property'en til andet layout.

Denne løsning har (som alle css layout modeller) nogle problemer. Den mest graverende er at de to columns ikke får samme højde. Og hvis #kolonne elementets bliver højere end #broed, vil #kolonne rage ned over efterliggende elementer, såsom en #footer.
Der findes måder at omgå dette problem.
Typisk kan man 'fake' at de bliver lige høje med baggrundsbilleder (fx give #broed et baggrundsbillede på 1px høj (med repeat-y), der i bredden de første 155px har en farve (som baggrund til kolonnen) og resten en anden farve (som baggrund til broed)).

Det med at kolonnen kan flyde over, kan jeg ikke huske løsningen på i hovedet, men jeg kan anbefale at kigge følgende side efter i koderne:
http://www.tanfa.co.uk/css/layouts/css-multi-column-layout-ap2.asp
eller google "2 column css layout"
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester