Avatar billede casper_skovgaard Nybegynder
25. februar 2004 - 10:25 Der er 15 kommentarer og
1 løsning

Hvordan oversætter jeg table til div

Jeg har opbygget en side vha. tabeller, men vil meget gerne bruge div-tags istedet, så jeg senere kan ændre layout'et ved kun at ændre style sheet'et.

her er koden:
<table width="100%"  border="1" cellspacing="0" cellpadding="0">
  <tr>
    <td style="width:auto; ">box1</td>
    <td style="width:180px; ">box2</td>
    <td style="width:520px; ">box3</td>
    <td style="width:auto; ">box4</td>
  </tr>
  <tr>
      <td>box5</td>
    <td colspan="2" style="width:700px;">box6</td>
    <td>box7</td>
  </tr>
</table>

det er vigtige at jeg kan adskille nogle af boksene med en linie/border, fx skal der være en border mellem box2 og box3, og der skal også være en border under box1-box4.
Avatar billede mik789 Nybegynder
25. februar 2004 - 11:04 #1
du kan se en vejledning her: http://www.e-tidsskrift.dk/dev/non_table_design.html

den giver dig principperne og så kan du nemt tilpasse det til din egen tabel

//mik
Avatar billede mik789 Nybegynder
25. februar 2004 - 11:27 #2
Her er et skelet. Har dog ikke testet...

#beholder {
  postition: absolute;
  top: 0px;
  left: 0px;
}
#topVenstre {
  float: left;
  border-bottom: 1px solid black;
}
#Box1 {
  float: left;
}
#Box2 {
  float: right;
  width: 180px;
}
#topHoejre {
  float: right;
  border-bottom: 1px solid black;
  border-left: 1px solid black;
}
#Box3 {
  float: left;
  width: 520px;
}
#Box4 {
  float: right;
}
#bund {
  clear: both;
}
#Box5 {
  float: left;
}
#bundHoejre {
  float: right;
}
#Box6 {
  float: left;
  width: 701px;
}
#Box7 {
  float: right;
}

<div id="beholder">
  <div id="topVenstre">
    <div id="Box1">bla</div>
    <div id="Box2">bla</div>
  </div>
  <div id="topHoejre">
    <div id="Box3">bla</div>
    <div id="Box4>bla</div>
  </div>
  <div id="bund">
    <div id="Box5">bla</div>
    <div id="bundHøejre">
      <div id="Box6">bla</div>
      <div id="Box7">bla</div>
    </div>
  </div>
</div>
Avatar billede mik789 Nybegynder
25. februar 2004 - 11:35 #3
hvis du teste, så tjek lige for slåfejl og manglende "
Avatar billede casper_skovgaard Nybegynder
25. februar 2004 - 11:58 #4
-> mik

et fint link men jeg kan stadig ikke få det til at virke.

det er vigtigt at der er en width på 100% og at box6 altid har samme width og er centreret. box2 og box3 skal være centreret ligesom box6
Avatar billede casper_skovgaard Nybegynder
25. februar 2004 - 11:59 #5
nu har jeg testet

og her er resultatet
http://rambo.frac.dk/469610/469610_div.html

og her er hvordan det skulle se ud
http://rambo.frac.dk/469610/469610_table.html

det er ikke helt det samme :)
Avatar billede mik789 Nybegynder
25. februar 2004 - 15:40 #6
i første omgang er problemet nok at der kun er faste mål på bredderne af nogle, men ikke alle bokse. Her er en tabel med faste mål hvor det fungerer: http://www.e-tidsskrift.dk/dev/tabel_fast.html
Avatar billede mik789 Nybegynder
25. februar 2004 - 16:06 #7
ja, det er manglen på mål der er problemet. Prøv i stedet at bygge den op i tre søjler med to rækker ovenpå hinandenden i hver søjle:

<div id="beholder" style="position:absolute; top:0px; left:0px; height:auto; width:100%;">

<div id="venstre" style="float:left;">
  <div id="Box1">Box1</div>
  <div id="Box5">Box5</div>
</div>

<div id="midt_hoejre" style="float:right;">

<div id="midt" style="float:left;">
  <div id="Box2" style="float:left; width:180px;">Box2</div><div id="Box3" style="float:right; width:520px;">Box3</div>
  <div id="Box6" style="clear:both; width:700px;">Box6</div>
</div>

<div id="hoejre" style="float:right;">
  <div id="Box4">Box4</div>
  <div id="Box7">Box7</div>
</div>

</div>

</div>

men jeg tror nok jeg forlængst havde sagt f... tabelløst design: her er en tabel bare sagen ;-)
Avatar billede casper_skovgaard Nybegynder
25. februar 2004 - 16:07 #8
ja det er helt klart det største problem i denne opgave, måske er det slet ikke muligt, og så må jeg jo bare bruge tabellen.

Hvis du har andre forslag er du meget velkommen :)
Avatar billede mik789 Nybegynder
25. februar 2004 - 17:19 #9
jo, ser nu her... vi nærmer os:

http://www.e-tidsskrift.dk/dev/tabel_relativ.html

her har jeg lavet det med tre søjler der er positioneret absolut, med den midterste centreret og et højrere z-index. eneste problem nu er at når der resizes ned risikerer du at teksten i ydersøjlerne forsvinder bag den midterste søjle.
Avatar billede mik789 Nybegynder
25. februar 2004 - 17:44 #10
og en lille forbedring, hvis du vil have en baggrund for hele "tabellen", dvs. hvis du vil sikere dig at den udvider den omgivende box (f.eks. hvis den skal have en border eller en baggrundsfarve):

http://www.e-tidsskrift.dk/dev/tabel_relativ_2.html
Avatar billede casper_skovgaard Nybegynder
26. februar 2004 - 08:51 #11
Det er ihvertfald meget tæt på det jeg skal brug, jeg vil arbejde lidt videre på dit udkast.

Tusind tak for hjælpen, smid et svar så får du dine velfortjente point :)
Avatar billede mik789 Nybegynder
26. februar 2004 - 08:53 #12
ved ikke om du stadig hænger på, men for lige at samle sammen:

CSS2 giver faktisk mulighed for at lave et fuldstændigt tabeldesign uden tabeller, men brug af <div>. Nemlig ved de forskellige værdier for egenskaben display, f.eks. display: table-row og display: table-cell. Så i princippet kan man gøre præcis det du efterlyser på denne måde. Der er bare ét problem: IE understøtter det ikke. Derfor forsøgte jeg her med de andre alternativer. Ingen af dem opfylder kravene fuldstændigt. Og hvis man har at gøre med flere "rækker" af "celler" der skal flugte, er et traditionelt "rigtigt" tabel-design nok det eneste der dur.
Avatar billede mik789 Nybegynder
26. februar 2004 - 08:55 #13
nå, vi var i gang samtidig :-)
Som sagt, synes jeg ikke selv det er helt optimalt af to grunde: teksten i de yderste "kolonner" kan forsvinde bag midter"kolonnen"; cellerne flugter ikke i bunden. Det ville de gøre med display: table-cell - hvis altså bare IE understøttede dette. Men hvis du kan bruge den tilnærmelsesvise løsning, så er det da fint.
Avatar billede casper_skovgaard Nybegynder
26. februar 2004 - 09:13 #14
lige til denne opgave er det faktisk ok at de yderste bokse forsvinder, de skal kun indeholde forskellige farver og streger, så designet også er pænt ved høj skærmopløsning.

det eneste jeg mangler er faktisk bare at box5 og box7 ydvider sig automatisk i højden, så de følger den nederste box.

jeg vil lige bruge lidt mere tid på div designet, og hvis ikke jeg ikke kan få det til at virke optimalt går jeg tilbage til tabel designet :)
Avatar billede casper_skovgaard Nybegynder
26. februar 2004 - 09:18 #15
hmmm, jeg kan ikke acceptere dit svar???? Nå jeg trykker på Accepter knappen, så reloader den bare siden...

Jeg prøver igen senere, du skal nok få dine point :)
Avatar billede mik789 Nybegynder
26. februar 2004 - 09:22 #16
du skal først klikke på mig og dernæst på acceptér. du har nok bare klikket på acceptér. det er ikke nok. den du vil acceptere skal først være markereret. lidt lumsk... jeg har også kludret med det.
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