Avatar billede torotune Nybegynder
24. september 2010 - 13:58 Der er 9 kommentarer og
1 løsning

Hjælp til at placere 3 DIV's i forhold til hinanden

Hej, er der nogen der kan give mig et eksempel på at opsætte disse 3 DIV's i forhold til hinanden med CSS-styles:

http://img838.imageshack.us/i/eksw.jpg/

Hvert DIV har deres eget background-image. Man vil altid kunne se DIV 2 i midten af sin skærm. Hvis ens skærmopløsning er for lille vil bredden på DIV1 og DIV3 tilpasse sig automatisk.

Her er hvad jeg er nået frem til, men det virker ikke optimalt:

<div style="float:left;width:auto; background-image:url(../left.jpg); background-repeat:no-repeat; background-position:top right;">left</div>
<div style="float:left; width:900px;background-image:url(../main.jpg); background-repeat:no-repeat;">main</div>
<div style="float:left;width:auto; background-image:url(../right.jpg); background-repeat:no-repeat; background-position:top left;">right</div>

Mvh.
Avatar billede stenger Nybegynder
24. september 2010 - 14:25 #1
Du laver en omkransende div, en container, som du giver en bredde hvori der er plads til dine 3 andre divs og evt. margin-left: auto; og margin-right:auto, for at centrere den på siden.

Altså:

<div style="width:1200px; margin-left:auto; margin-right;auto;">
  <div style="float:left; width:300px;">
    &nbsp;
  </div>
  <div style="float:left; width:900px;">
    &nbsp;
  </div>
  <div style="float:left; width:300px;">
    &nbsp;
  </div>
</div>


That´s it :)
Avatar billede torotune Nybegynder
24. september 2010 - 14:39 #2
Hej stenger,

Det virker ikke helt. Venstre og højre div's bredde skal automatisk tilpasse sig deres respektive background images, hele midter-div'en skal altid have fast bredde. Hvis man formindsker sin opløsning eller sit browser-vindue, skal vnestre og højre div's bredde automatisk skrumpe. 

Prøv at se her hvordan jeg kan lave det med en tabel:

<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td style="width:auto; background-image:url(../left.jpg); background-repeat:no-repeat; background-position:top right;"></td>
    <td width="1003"> 
    </td>
    <td style="width:auto; background-image:url(../right.jpg); background-repeat:no-repeat; background-position:top left;"></td>
  </tr>
</table>

Jeg vil bare gerne uden om at bruge tabel og lave det i rene divs.

Mvh.
Avatar billede stenger Nybegynder
24. september 2010 - 14:57 #3
Du kan ikke få divs til at tilpasse sig til størrelsen på background-image, det går altid den anden vej. Altså, background-images reagerer ud fra størrelsen på divs.

Jeg kan ærlig talt ikke rigtig svare dig fyldestgørende på det, da jeg altid laver mine ting i fixed width. Dette skyldes at det oftest foregår i et CMS-system, der skal overleveres til kunden. Vil jeg være sikker på at designet ikke bliver totalt ødelagt af en ikke-teknisk kunde, så er jeg nødt til at begrænse dem og altså blandt andet lave mine ting fixed width :)

/Stenger
Avatar billede torotune Nybegynder
24. september 2010 - 15:19 #4
Hej ok - det virker fint for <td>'s med at tilpasse sig størrelsen efter et background image, men det kan godt være at de bare ikke opfører sig som divs.

Tænkte bare om man kunne undgå at bruge tabeller og så få samme resultat ud af det.
Avatar billede stenger Nybegynder
24. september 2010 - 15:37 #5
Divs opfører sig ikke som tabeller og du skal tænke lidt anderledes, når du benytter dem.

Til gengæld har du så nemmere ved at ændre layout og elementer senere hen, hvor tabeller (efter min mening) totalt låser dig fast.

Men ja, divs kræver en højde og en bredde, der svarer til baggrundsbilledet for at vise hele dette. Ellers "sluger" div´en bare noget af billedet.

/Stenger
Avatar billede Slettet bruger
29. september 2010 - 20:38 #6
jeg nupsede lidt fra jer begges eksempler. Dette burde virke efter hensigten.
<div style="width:100%;">
  <div style="float:left; min-width:300px;background-image:url(../left.jpg); background-repeat:no-repeat; background-position:top right;">
     
  </div>
  <div style="float:left; width:900px;">
     
  </div>
  <div style="float:left; min-width:300px;background-image:url(../right.jpg); background-repeat:no-repeat; background-position:top left;">
     
  </div>
</div>

NB! min-width bliver ikke respekteret af IE6
Avatar billede torotune Nybegynder
09. oktober 2010 - 15:13 #7
Hej aalandriel - jeg tester lige dit forslag på mandag :-)
Avatar billede torotune Nybegynder
18. oktober 2010 - 09:38 #8
aalandriel - > Det virker heller ikke helt, når browservinduet bliver for småt lægger de 3 div's sig i en stak ovenpå hinanden:

Left
Midt
Højre
Avatar billede torotune Nybegynder
02. december 2010 - 11:01 #9
Andre bud?
Avatar billede torotune Nybegynder
09. januar 2011 - 20:28 #10
Lukker så.
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