23. september 2004 - 17:36Der er
26 kommentarer og 1 løsning
Jeg mangler grundbegreber
Der er et par ting jeg aldrig har fået 110% på plads, og det håber jeg I vil hjælpe med.
Det klassiske spørgsmål vedr. tabeller: Hvis jeg har en tabel med et banner, en menu, "papiret" (hvor tekst og billeder skal være i) og en bund, så plejer jeg at lave det på denne måde:
Det gør jeg fordi antallet af menupunkter kan variere. Desuden roder jeg også lidt med en dynamisk menu i ASP, og så synes det er lidt omstændigt at tælle antallet af menupunkter, hvis jeg skal lave en rowspan="X":
Desuden kan denne metode også give problemer mht. højden, hvis indholdet på siden overstiger højden i menuen; så bliver cellerne trukket ud, og det står ad H til på siden.
Jeg får at vide, at jeg har et problem med nested tables. Hvad er det, og hvordan laver jeg det mest hensigtsmæsigt?
Ok, jeg fik at vide fra valideringsspørgsmålet, at jeg "nestede" mine tables. Hvad vil det sige? Og er der en mere hensigtsmæssig måde at lave en side med en tabel på?
Synes godt om
Slettet bruger
25. september 2004 - 01:34#4
At "neste" betyder bare at "lægge inde i hinanden". Der menes altså, at du har en tabel inde i an anden tabel. Rent valideringsmæssigt er det ikke en fejl, men det kan være lidt svært at overskue. Derudover er der så nogle purister, som mener, at man ikke bør bruge tables til ren layoutstyring (jeg er til dels enig med dem), men da det er et spørgsmål om smag, kan du sagtens vælge at overhøre det.
Jeg ville nok foreslå at lave menuen som en uordnet liste <ul> med noget CSS til at styre udseendet. F.eks med denne grundskabelon:
Jeg kan ikke være mere enig, man bør undgå for mange tables. Jeg støder dog konstant på forhold, hvor det for mig at se kun kan lade sig gøre ved at lægge en tabel ind i en tabel. Som f.eks. eksemplet med menuen. Hvordan kan man f.eks. lave en
style="display: block; width: 160px;"
- hvis ikke man deler det op i celler? Det var nu et dårligt eksempel, for det kan vist sagtens lade sig gøre med display: block; Jeg ved godt det kan lade sig gøre, men jeg synes der konstant dukker noget op, hvor man (for mig at se) er nødt til at lægge en tabel ind i en tabel. Jeg prøver kun at bruge én tabel, men det kan give noget rod med padding, colspan og rowspan - synes jeg :o)
Et andet eksempel: Du laver en side, hvor du trækker de seneste 5 debatemner ud, de seneste 5 ting, der er sat til salg etc. Dem trækker du ud i en kolonne til højre, hvor du har menu til venstre og forsiden i midten. For at skille de udtrækninger ud, angiver du v.hj.a. CSS forskellige farver og lidt grafik til at illustrere hvad brugeren kigger på. Er der ikke mange forhold, der næsten fordrer, at man laver nestede tables? (Læg lige et svar)
Synes godt om
Slettet bruger
25. september 2004 - 17:54#6
De eneste tilfælde, jeg kender til, hvor det er rigtig svært (grænsende til umuligt) at lave uden tabeller, er hvis man har to kolonner, der skal være lige høje, og det er et krav, at layoutet også skal virke med IE4 og NN4. Og der ville jeg så vidt muligt stadig nøjes med den yderste tabel til selve det basale layout.
Hvis det er en side, jeg laver for mig selv eller på lignende frivillig basis, så vil jeg vælge at skjule layoutet for oldtidsbrowserne. Hvis bare de kan få selve indholdet på siderne, så må de undvære pynten. (Og hvis skidtet stadig virker uden alt pynten, så er jeg nogenlunde overbevist om at søgemaskiner og andre blinde brugere også kan få det relevante ud af siden.)
Og ja, dit eksempel var lidt dårligt, for det virker fint at bruge f.eks.
#menu li a:link {display:block;}
Og så kan IE også finde ud af at bruge CSS's hover-effekter på menuen, når det er linket selv, man sætter til block.
I det hele taget kan jeg godt lide lister til sådan noget som menuer. De er også nemme at smide inden i hinanden.
Angående din højremenu med debatemner og salg, så er det (afhængigt af strukturen af indholdet) måske noget, der naturligt passer til en tabel, og så er der jo intet i vejen for at bruge en.
<table> er ikke på nogen måde ved at blive forældet, så du behøver ikke være bange for at bruge den. Den vil også blive understøttet af fremtidens browsere i mange år frem.
Nogle af de purister, der ikke kan lide at bruge tabeller til layoutstyring har endda lavet sider, der ser således ud:
.container {display: table;} .container div {display: table-row;} .container div div {display: table-cell;}
Og godt nok virker det, men så havde det efter min mening været smartere og lettere bare at bruge en tabel.
Så mine råd er: - undgå at bruge for mange tabeller inde i hinanden. - prøv at lege med lister og se, hvad man kan gøre med dem. - brug en tabel, hvis det kræver en masse bøvl at bruge andet.
Jeg vil heller ikke til at skifte over til 100% div's, men jeg tror ikke det gør noget at overveje den fremtidige struktur. Som det er i øjeblikket, så laver jeg ikke mine sider helt så hensigtsmæssigt, som jeg kunne. Og det vil jeg gerne have styr på. Flere spørgsmål oprettes vedr. emnet, stol bare på det :o)
Synes godt om
Slettet bruger
26. september 2004 - 13:23#18
Hvis du vil prøve at lege med lister er her lige et par gode links:
Det frarådes generelt at ændre classNames on-the-fly, da browseren på forhånd opgiver at finde ud af, hvilken indflydelse det kan have på eventuelt nestede elementer i dokumentet ...
Derfor smider den simpelthen den visning af dokumentet ud, den har beregnet, og starter forfra med at opbygge et nyt bibliotek over hvert enkelt elements visning (som om dokumentet blev reloadet !-)
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.