Mange webansvarlige vil garantert bruke HTML-tabeller i maler er dårlig praksis. Men i denne leksjonen vi skal bare se på CSS-tabeller. Hva er forskjellen mellom HTML- og CSS-tabeller? Må jeg bruke CSS-tabeller? Hvis ja, hvordan?
Hvordan lage en CSS-tabell
CSS-tabellmodellen er basert på HTML4-tabellmodellen og støttes godt av nettlesere. I begge modellene eksisterer tabellstrukturen parallelt med den visuelle presentasjonen.
Hovedelementene i strukturen er strenger. Raden er definert eksplisitt, og kolonnene avhenger av hvordan radene og cellene er definert.
Du har sikkert jobbet med HTML-tabeller før. I så fall vil du ikke ha noe problem med å lage CSS-tabeller.
Hvert HTML-tabellelement har en CSS-ekvivalent. Den eneste forskjellen er at det ikke er noen forskjell mellom td og th i CSS-varianten.
Nedenfor er en liste over HTML-tabellelementer og deres tilsvarende CSS-verdier.
Tabell (display: table) tr (display: table-row) thead (display: table-header-group) tbody (display: table-row-group) tfoot (display: table-footer-group) col (display: table- kolonne) colgroup (display: table-column-group) td, th (display: table-cell) caption (display: table-caption)
Bildetekster kan plasseres øverst eller nederst i tabellen ved å bruke egenskapen på bildetekstsiden:
#caption (caption-side: top) #caption (caption-side: bottom)
Det er ikke vanskelig å finne ut hvordan du lager en CSS-tabell fra følgende liste. Her er et eksempel på en tabell.
#tabell (display: table;) .row (display: table-row;) .cell (display: table-cell;)
Hvis du ser på koden HTML eksempel, kan du enkelt skille strukturen til tabellen (ved å bruke div og span-elementer med klasser og ID i stedet for table, td og tr).
Med svært lite CSS vises div- og span-elementene som en tabell.
I tillegg til egenskapene ovenfor, inkluderer CSS-tabellmodellen en inline-tabellverdi som definerer nytt bord som display: table, men innenfor konteksten til det HTML-innebygde formatet.
Kolonner og deres gruppering
Siden tabellceller er etterkommere av tabellrader, er det fornuftig å bruke noen egenskaper for å danne kolonner. CSS-tabellmodellen lar deg søke følgende egenskaper for kolonner og deres gruppering:
- grense- en felles eiendom, så lenge grensekollapseegenskapen ikke brukes for et tabellelement;
- bakgrunn- den vanlige egenskapen, så lenge raden og cellen har en gjennomsiktig bakgrunn;
- bredde- innstilling av kolonnebredden;
- synlighet- hvis kollaps (den eneste tilgjengelig verdi), vil ikke kolonnecellen vises (den er slått sammen med andre kolonner og tabellbredden er justert).
CSS-tabellstabel
Ulike bordelementer har forskjellig nivå på en stabel for å tillate forskjellige bakgrunner på forskjellige lag.
Disse lagene kan sees i figuren nedenfor.
- tabellen er det laveste laget
- kolonnegruppe
- kolonner
- gruppe av linjer
- strenger
- celler - det øverste laget
Bakgrunnen til laget vil bare være synlig hvis det underliggende laget har en gjennomsiktig bakgrunn.
den flott måteå skrive ut tomme celler som er virkelig tomme ved å bruke gjennomsiktig bakgrunn for dem, der en rad, kolonne eller tabell vil være synlig.
Tabellmalalgoritme
Bredden på en CSS-tabell kan beregnes ved hjelp av en av to algoritmer. Algoritmen velges ved å bruke egenskapen tabelloppsett og to verdier:
- fikset(fast) - bredden på malen bestemmes ikke av innholdet, men ved å angi bredden på tabellen, celler, rammer og avstanden mellom cellene;
- auto(automatisk) - bredden på tabellen er satt basert på bredden på kolonnene og kantene.
Den faste malmodellen beregnes én gang og er veldig rask. EN automatisk modus(standard) krever flere passeringer gjennom HTML-tabellen.
Hvis du eksplisitt definerer bredden på tabellen, bør du bruke beregningsmodellen for fast bredde.
Som standard er cellehøyden satt til minimum som kreves for å vise innhold. Men du kan eksplisitt definere høyden på cellen. Alle cellene i raden vil ha høyden til cellen med maksimal verdi.
Egenskapen vertikal-justering bestemmer justeringen av innholdet på linjen
- grunnlinje
- bunn
- midten
- sub, super, tekst-topp, tekst-bunn,<длина>, <процент>
Den siste gruppen med verdier brukes ikke på celler, men på teksten i dem. Cellene i dette tilfellet vil bli justert i henhold til grunnlinjeverdien.
CSS bordrammer
Det er tre interessante egenskaper for bordkanter:
- grensekollaps- kan være kollaps, separat eller arve
- grenseavstand- kan ha betydning<расстояние_по_горизонтали>, <расстояние_по_вертикали>, eller arve. Bestemmer avstanden mellom cellekantene.
- tomme celler- kan vise, skjule eller arve. Hvis cellen er tom eller har en synlighet: skjult egenskap, vil ikke innholdet vises som standard. Innstilling av tomme celler: show-egenskapen vil vise bakgrunnen og rammen for den tomme cellen.
Må jeg bruke CSS-tabeller?
Er CSS-tabeller bedre enn HTML-tabeller? I så fall, hva er fordelene deres? Hvis ikke, hvorfor bør de ikke brukes? Gode spørsmål, som det ikke finnes et enkelt svar på.
Ser man på bruken av HTML-tabeller versus en kombinasjon av divs og CSS-kode, dukker følgende ulemper ved tabeller opp:
- Ekstra koding- HTML-tabeller krever ekstra strukturkoding i forhold til div elementer... Men CSS-tabeller krever også ekstra klasser og identifikatorer.
- Stiv struktur– HTML-tabeller er veldig tett bundet til innholdet. Rekkefølgen på cellene skal være den samme som den vil bli vist. Men den samme begrensningen gjelder for CSS /
- Utdata i nettlesere- nettlesere gjør flere gjennomganger HTML-struktur tabeller. Men situasjonen vil være lik for CSS-tabeller.
Som nevnt ovenfor har ikke CSS-tabeller betydelige fordeler i forhold til HTML-tabeller når de brukes i maler.
CSS-tabeller er en mer semantisk løsning da det er et klart skille mellom datastruktur og presentasjon.
Konklusjon
CSS-tabeller er enkle å lære og bruke. Men de har ingen klar fordel i forhold til HTML-tabeller, bortsett fra mer semantisk kode.
Kanskje praksis vil vise fordelene eller ulempene med CSS-tabeller. Har du noen erfaring med å bruke CSS-tabeller i virkelige prosjekter?