Tabele lahko s CSS precej natančno oblikujemo. Določimo lahko robove, velikost, poravnavo, barve, notranje odmike, razdaljo med celicami in položaj opisa tabele. Pri tem pa ni pomemben le videz, ampak tudi preglednost in smiselna raba tabele za prikaz podatkov.
Pomni: Tabela je namenjena prikazu pregledno urejenih podatkov v vrsticah in stolpcih. CSS naj izboljša berljivost tabele, ne pa zakrije njeno strukturo.
Pri sodobnem oblikovanju tabel je poleg videza pomembna tudi berljivost. Pogosto uporabljamo združene robove, primerne notranje odmike celic, jasen kontrast med naslovnimi in navadnimi celicami ter opis tabele z elementom <caption>.
Osnovna pravila
- Tabelo uporabljamo za podatke, ki sodijo v vrstice in stolpce.
- Naslovne celice praviloma označimo z elementom
th, navadne pa z elementomtd. - Pri oblikovanju tabele pogosto določimo robove, širino, poravnavo, barve in notranje odmike.
- Opis tabele je smiselno zapisati z elementom
caption. - Pri preglednosti je pogosto koristna uporaba lastnosti
border-collapse: collapse.
Pozor: Tabele niso namenjene splošni postavitvi strani. Za postavitev delov spletne strani danes uporabljamo druge pristope, na primer flex ali grid.
Obrobe tabel
Obrobe tabelam in celicam v CSS določimo z lastnostjo border. Robove lahko določimo tabeli, naslovnim celicam th in navadnim celicam td.
<table>
<tr>
<th>naslov 1</th>
<th>naslov 2</th>
<th>naslov 3</th>
</tr>
<tr>
<td>celica 1</td>
<td>celica 2</td>
<td>celica 3</td>
</tr>
<tr>
<td>celica 4</td>
<td>celica 5</td>
<td>celica 6</td>
</tr>
</table>
table, th, td { border: 2px solid #FBA517; }
| naslov 1 | naslov 2 | naslov 3 |
|---|---|---|
| celica 1 | celica 2 | celica 3 |
| celica 4 | celica 5 | celica 6 |
Pomni: Če robove določimo tako tabeli kot celicam, je prikaz robov odvisen tudi od lastnosti border-collapse.
Višina in širina tabel
Višino in širino tabel, vrstic in celic določamo predvsem z lastnostima height in width. V sodobni praksi se najpogosteje uporabljajo enote, kot so px, em, rem in %.
table {
border: 2px solid #FBA517;
width: 100%;
}
th {
border: 2px solid #FBA517;
height: 30px;
}
td {
border: 2px solid #FBA517;
}
| naslov 1 | naslov 2 | naslov 3 |
|---|---|---|
| celica 1 | celica 2 | celica 3 |
| celica 4 | celica 5 | celica 6 |
Poravnava besedila v tabelah
Besedilo v celicah tabel poravnamo predvsem z lastnostima:
text-align– vodoravna poravnava besedilavertical-align– navpična poravnava vsebine znotraj celice
Pri lastnosti text-align v tabelah najpogosteje uporabljamo vrednosti left, right, center in justify. Uporabimo lahko tudi logični vrednosti start in end, ki se prilagodita smeri pisanja besedila.
Pri lastnosti vertical-align v tabelah najpogosteje uporabljamo vrednosti top, middle in bottom. Možne so tudi druge vrednosti, na primer baseline, vendar se v tabelah najpogosteje uporabljajo prve tri.
table {
border: 2px solid #FBA517;
width: 100%;
}
th {
border: 2px solid #FBA517;
height: 40px;
vertical-align: bottom;
}
td {
border: 2px solid #FBA517;
text-align: left;
}
| naslov 1 | naslov 2 | naslov 3 |
|---|---|---|
| celica 1 | celica 2 | celica 3 |
| celica 4 | celica 5 | celica 6 |
Pozor: Pri tabelah z veliko podatki je slaba poravnava lahko hitro nepregledna. Številčne podatke je pogosto smiselno poravnati drugače kot besedilo.
Barve tabel
Barve tabel, vrstic in celic določimo predvsem z lastnostma:
background-color– barva ozadja,color– barva besedila.
table {
border: 2px solid #FBA517;
width: 100%;
}
th {
border: 2px solid #FBA517;
background-color: #FBB025;
color: #FFFFFF;
}
td {
border: 2px solid #FBA517;
background-color: #F8E9C2;
}
| naslov 1 | naslov 2 | naslov 3 |
|---|---|---|
| celica 1 | celica 2 | celica 3 |
| celica 4 | celica 5 | celica 6 |
Odmiki v tabelah
Pri tabelah razlikujemo:
padding– prostor med vsebino celice in njenim robom,border-spacing– prostor med sosednjimi celicami, kadar tabela uporabljaborder-collapse: separate.
table {
border: 2px solid #FBA517;
width: 100%;
}
th, td {
border: 2px solid #FBA517;
padding: 15px 0 5px 20px;
}
| naslov 1 | naslov 2 | naslov 3 |
|---|---|---|
| celica 1 | celica 2 | celica 3 |
| celica 4 | celica 5 | celica 6 |
table-layout
Z lastnostjo table-layout vplivamo na način, kako brskalnik izračuna širine stolpcev:
auto– širine stolpcev so odvisne tudi od vsebine celic,fixed– širine stolpcev so določene hitreje in bolj predvidljivo, vendar mora biti širina tabele določena.
| Vrednost | Pomen |
|---|---|
auto |
širina tabele in stolpcev je odvisna tudi od vsebine celic |
fixed |
širina stolpcev je bolj predvidljiva; deluje smiselno le, če ima tabela določeno širino |
initial |
ta vrednost naj bo privzeta |
inherit |
vrednost podeduje od nadrejenega elementa |
<p>Tabela ima lastnost <em>table-layout: <strong>auto</strong></em></p>
<table class="auto">
<tr>
<td>celica 1 celica 1 celica 1</td>
<td>celica 2</td>
</tr>
</table>
<p>Tabela ima lastnost <em>table-layout: <strong>fixed</strong></em></p>
<table class="fixed">
<tr>
<td>celica 1 celica 1 celica 1</td>
<td>celica 2</td>
</tr>
</table>
.auto { table-layout: auto; width: 100%; }
.fixed { table-layout: fixed; width: 100%; }
Tabela ima lastnost table-layout: auto
| celica 1 celica 1 celica 1 | celica 2 |
Tabela ima lastnost table-layout: fixed
| celica 1 celica 1 celica 1 | celica 2 |
Pomni: Pri lastnosti table-layout: fixed vsebina celic sama po sebi ne določa več širine stolpcev tako kot pri vrednosti auto.
border-collapse
Z lastnostjo border-collapse določimo, ali bo vsaka celica tabele imela svoje robove ali pa si bosta sosednji celici delili skupen rob.
| Vrednost | Pomen |
|---|---|
separate |
vsaka celica ima svoje robove |
collapse |
sosednji celici si delita skupen rob |
initial |
ta vrednost naj bo privzeta |
inherit |
vrednost podeduje od nadrejenega elementa |
<table class="separate">
<tr>
<td>celica 1</td>
<td>celica 2</td>
<td>celica 3</td>
</tr>
<tr>
<td>celica 4</td>
<td>celica 5</td>
<td>celica 6</td>
</tr>
</table>
.separate { border-collapse: separate; }
.collapse { border-collapse: collapse; }
Tabela ima lastnost border-collapse: separate
| celica 1 | celica 2 | celica 3 |
| celica 4 | celica 5 | celica 6 |
Tabela ima lastnost border-collapse: collapse
| celica 1 | celica 2 | celica 3 |
| celica 4 | celica 5 | celica 6 |
border-spacing
Kadar ima tabela lastnost border-collapse: separate, lahko z lastnostjo border-spacing določimo razdaljo med sosednjimi celicami. Če navedemo eno vrednost, velja ta za vodoravno in navpično smer. Če navedemo dve vrednosti, prva določa vodoravno, druga pa navpično razdaljo med celicami.
| Vrednost | Pomen |
|---|---|
dolžina |
enaka vodoravna in navpična razdalja med celicami |
dolžina dolžina |
prva vrednost določa vodoravno, druga pa navpično razdaljo med celicami |
initial |
ta vrednost naj bo privzeta |
inherit |
vrednost podeduje od nadrejenega elementa |
.spacing0 {
border-collapse: separate;
background-color: #E8E8E8;
border-spacing: 0;
}
.spacing3 {
border-collapse: separate;
background-color: #E8E8E8;
border-spacing: 3px;
}
Tabela ima lastnosti:
border-collapse: separate; background-color: #E8E8E8;
border-spacing: 0
| celica 1 | celica 2 | celica 3 |
| celica 4 | celica 5 | celica 6 |
Tabela ima lastnosti:
border-collapse: separate; background-color: #E8E8E8;
border-spacing: 3px
| celica 1 | celica 2 | celica 3 |
| celica 4 | celica 5 | celica 6 |
Tabela ima lastnosti:
border-collapse: separate; background-color: #E8E8E8;
border-spacing: 20px 5px
| celica 1 | celica 2 | celica 3 |
| celica 4 | celica 5 | celica 6 |
Pozor: Lastnost border-spacing ne deluje, če tabela uporablja border-collapse: collapse.
empty-cells
Če tabela uporablja border-collapse: separate, lahko z lastnostjo empty-cells določimo, ali naj se robovi in ozadje prikažejo tudi pri praznih celicah.
| Vrednost | Pomen |
|---|---|
hide |
prazne celice nimajo vidnega roba in ozadja |
show |
tudi prazne celice imajo rob in ozadje |
initial |
ta vrednost naj bo privzeta |
inherit |
vrednost podeduje od nadrejenega elementa |
.hide {
border-collapse: separate;
empty-cells: hide;
}
.show {
border-collapse: separate;
empty-cells: show;
}
Tabela ima lastnost empty-cells: hide
| celica 1 | celica 3 | |
| celica 4 | celica 5 |
Tabela ima lastnost empty-cells: show
| celica 1 | celica 3 | |
| celica 4 | celica 5 |
caption-side
Z lastnostjo caption-side določimo, na kateri strani tabele bo prikazan opis tabele.
| Vrednost | Pomen |
|---|---|
top |
opis tabele je nad tabelo oziroma na začetni strani tabele |
bottom |
opis tabele je pod tabelo |
initial |
ta vrednost naj bo privzeta |
inherit |
vrednost podeduje od nadrejenega elementa |
.top { caption-side: top; }
.bottom { caption-side: bottom; }
Tabela ima lastnost caption-side: top
| celica 1 | celica 2 | celica 3 |
| celica 4 | celica 5 | celica 6 |
Tabela ima lastnost caption-side: bottom
| celica 1 | celica 2 | celica 3 |
| celica 4 | celica 5 | celica 6 |
Priporočila
- Za preglednejši prikaz tabel pogosto uporabi
border-collapse: collapse. - Naslovne celice vizualno loči od navadnih celic z barvo, debelino pisave ali ozadjem.
- V celicah uporabi dovolj velik
padding, da besedilo ni stisnjeno ob robove. - Opis tabele dodaj z elementom
caption, kadar pomaga pri razumevanju podatkov. - Pri tabelah z več podatki poskrbi za dober kontrast in jasno poravnavo vsebine.
Pogoste napake
- Tabela se uporablja za postavitev strani namesto za prikaz podatkov.
- V tabeli ni jasne razlike med naslovnimi in navadnimi celicami.
- Lastnost
border-spacingse uporablja skupaj zborder-collapse: collapse. - Pri vrednosti
table-layout: fixedni določena širina tabele. - Prazne celice se oblikujejo brez razumevanja vpliva lastnosti
empty-cells.