☰ menu
Pavel Satrapa

Skupiny řádků a sloupců

Neřeknete-li jinak, je tabulka tvořena homogenní sítí buněk bez jakéhokoli členění. Vy ovšem můžete říci jinak a rozdělit její řádky a/nebo sloupce do skupin. Skupinám pak můžete přidělit speciální vzhled pomocí CSS, případně atributem rules="groups" u prvku <table> předepsat, že uvnitř tabulky mají být čarami odděleny jen celé skupiny.

Skupiny sloupců

K vymezení skupin sloupců slouží prvek <colgroup>. Základní použití spočívá v tom, že jím „obalíte“ prvky <col> definující jednotlivé sloupce.

Prvek <colgroup> má stejné atributy jako <col>. jejich význam je stejný a platí pro všechny sloupce skupiny, pokud je ovšem nepředefinujete na úrovni jednotlivých sloupců. Stejně jako v ostatních situacích zde platí, že lokální definice přebíjí tu, jež přichází „zvenčí“.

Například můžeme tento mechanismus využít v naší nákladově/ziskové tabulce k oddělení nadpisů a „těla“ řádků. Rozdělíme sloupce do dvou skupin – v jedné bude nadpis, ve druhé pak oba datové sloupce:

<table border="1" rules="groups">
  <colgroup align="left">
    <col />
  </colgroup>
  <colgroup align="right">
    <col />
    <col />
  </colgroup>
<tr><th>Měsíc</th> <th>Výnosy</th><th>Náklady</th></tr>
<tr><th>Leden</th> <td>12360</td> <td>8619</td>   </tr>
<tr><th>Únor</th>  <td>9833</td>  <td>6587</td>   </tr>
<tr><th>Březen</th><td>14209</td> <td>10318</td>  </tr>
<tr><th>Celkem</th><td>36402</td> <td>25542</td>  </tr>
</table>

Formátovaná podoba pak vypadá takto:

Měsíc VýnosyNáklady
Leden 12360 8619
Únor 9833 6587
Březen14209 10318
Celkem36402 25542

Jakmile v tabulce použijete <colgroup>, musíte všechny sloupce zařadit do skupin. Proto ona nelogicky vypadající skupina zahrnující jen první sloupec v naší tabulce.

Tělo prvku <colgoup> nicméně může být prázdné. V tom případě hodnota atributu span určuje, kolik sloupců dotyčná skupina obsahuje (jeho implicitní hodnotou je 1). Všechny mají stejné vlastnosti určené ostatními atributy <colgroup>. Jakmile je v těle <colspan> obsažen alespoň jeden <col>, hodnota atributu span se ignoruje a počet sloupců je určen počtem prvků <col> uvnitř skupiny.

První skupinu z předchozího příkladu by proto bylo možné zkrátit, aniž by se změnil význam:

<table border="1" rules="groups">
  <colgroup align="left"></colgroup>
  <colgroup align="right">
    <col />
    <col />
  </colgroup>
...

Skupiny řádků

Podobně jako sloupce, i řádky lze shlukovat do skupin. Mechanismus se ale poněkud liší a navíc nejsou všechny skupiny stejné.

HTML zavádí pro shlukování řádků tři prvky: <thead> pro záhlaví, <tfoot> pro zápatí a <tbody> pro skupinu řádků v těle tabulky. Na rozdíl od skupin sloupců se nepíší předem, ale přímo obalují (obsahují) odpovídající řádky. Obsahem každého z těchto prvků je alespoň jeden řádek.

Každá tabulka může mít nanejvýš jeden <thead>, za ním nanejvýš jeden <tfoot> a poté libovolný počet <tbody>. Prvky musí být v uvedeném pořadí, čili patička poněkud nelogicky ve zdrojovém textu předchází vlastní tělo tabulky. Klient by ji ale při zobrazení samozřejmě měl přesunout na konec.

Když nadále rozvinu naši tabulku a prohlásím její první řádek za záhlaví a poslední za patičku, dopracuji se k následujícímu zdrojovému kódu:

<table border="1" rules="groups">
  <colgroup align="left">
    <col />
  </colgroup>
  <colgroup align="right">
    <col />
    <col />
  </colgroup>
<thead>
  <tr><th>Měsíc</th> <th>Výnosy</th><th>Náklady</th></tr>
</thead>
<tfoot>
  <tr><th>Celkem</th><td>36402</td> <td>25542</td>  </tr>
</tfoot>
<tbody>
  <tr><th>Leden</th> <td>12360</td> <td>8619</td>   </tr>
  <tr><th>Únor</th>  <td>9833</td>  <td>6587</td>   </tr>
  <tr><th>Březen</th><td>14209</td> <td>10318</td>  </tr>
</tbody>
</table>

a jeho podoba:

Měsíc VýnosyNáklady
Celkem36402 25542
Leden 12360 8619
Únor 9833 6587
Březen14209 10318

Jakmile se rozhodnete používat skupiny řádků, je záhodno zařadit do nich všechny řádky tabulky.