Tabulky jsou docela složité struktury, které se skládají z řádků a sloupců. Vnější základní strukturu tabulek vždy tvoří prvek table
.
<table> … </table>
Uvnitř tohoto prvku probíhá vlastní definice tabulky. Mimochodem, je doporučeno během implementace tabulky v HTML přiřadit rámeček. Tak si můžete lépe představit, jak přesně probíhají řádky a sloupce. K tomu přiřadíte počátečnímu <table>
kombinaci atributů border="1"
. (Vezměte na vědomí, že atribut border
by neměl být v HTML používán. Místo toho se k daným CSS vlastnostem uchylujeme. O tom později víc).
<table border="1"> … </table>
Pokračujeme s definicí řádků tabulky. To se děje pomocí prvku tr
.
<table border="1"> <tr></tr> </table>
To ale ještě nevede k požadovanému výstupu. Následně je třeba definovat sloupce. To se opět provádí pomocí prvku td
.
<table border="1"> <tr> <td></td> </tr> </table>
Nyní můžete definovat první obsah tabulky. To se definuje mezi <td>
a </td>
.
<table border="1"> <tr> <td>Obsah 1</td> </tr> </table>
Teprve teď se vyplatí podívat na výsledek v prohlížeči.
Zatím to není zas tak překvapivé, koneckonců tabulka momentálně sestává jen z jedné buňky. Nyní můžete přidat další sloupec. To se opět provádí pomocí prvku td
. Dbejte na to, abyste ho definovali uvnitř prvku tr
.
<table border="1"> <tr> <td>Obsah 1</td> <td>Obsah 2</td> </tr> </table>
Zde opět pohled na výsledek.
Pro přidání dalších řádek do tabulky jednoduše vytvoříte další prvek tr
, ve kterém pak opět definovali požadované prvky td
.
Zde je další příklad:
<table border="1"> <tr> <td>Obsah 1</td> <td>Obsah 2</td> </tr> <tr> <td>Obsah 3</td> <td>Obsah 4</td> </tr> </table>
Pohled na výsledek v prohlížeči poskytuje následující:
Tímto způsobem můžete vytvářet i rozsáhlé tabulky.
Definovat hlavičku, tělo a patu
Tabulky lze rozdělit na logické oblasti. Jednou z nich je hlavička, jedna nebo více oblastí dat a patička. Následující příklad ukazuje, jak to může vypadat:
<table border="1"> <thead> <tr> <th>Odjezd</th> <th>Příjezd</th> <th>Nástupiště</th> </tr> </thead> <tfoot> <tr> <td>Berlín</td> <td>Stralsund</td> <td>5</td> </tr> </tfoot> <tbody> <tr> <td>Berlín</td> <td>Hamburk</td> <td>1</td> </tr> <tr> <td>Mnichov</td> <td>Berlín</td> <td>3</td> </tr> </tbody> </table>
A zde je pohled na výsledek v prohlížeči:
Rozdělení na uvedené oblasti nemá zjevný vizuální efekt. Samozřejmě se nabízí otázka: Proč byste se pak měli obtěžovat a tyto oblasti definovat? Na to existují dva dobré důvody:
• Pomocí CSS lze oblasti podle potřeby různě formátovat.
• Prohlížeče při tisku dlouhých tabulek mohou opakovat tabulkovou hlavičku a tabulkovou patu na každé stránce.
Hlavička tabulky je zavedena pomocí thead. Začínají řádky tabulky patřící do hlavičky. Nezapomeňte uzavřít hlavičku </thead>
.
Pokud má tabulka získat patičku, musí být tato definována před tělem tabulky. Pata je zahájena pomocí <tfoot>
. Následně mohou následovat opět jedna nebo více řádků patřících do paty. Patu tabulky ukončíte pomocí </tfoot>
.
Samotné tělo tabulky se definuje uvnitř prvku tbody
. Toto tbody
může být vícekrát použito. Každé tělo tabulky se uzavře pomocí </tbody>
.
Proč byste například v tabulce používali více prvků tbody
? Příkladem může být tabulka německé fotbalové ligy. V takové tabulce obvykle existuje více oblastí.
• Mistři
• Účastníci Ligy mistrů
• Kvalifikanti Ligy mistrů
• Účastníci Evropské ligy
• Střed pole
• Play-off
• Sestupující
Každou tuto oblast můžete umístit do vlastního prvku tbody a poté je formátovat pomocí CSS odlišně.
Předdefinování sloupců
To, jak je tabulka zobrazena v prohlížečích, závisí přirozeně především na existujícím počtu řádků a sloupců. Proces zobrazení tabulky pro prohlížeč však není zcela jednoduchý. Prohlížeč totiž musí nejprve celou tabulku načíst, než ji může zobrazit. Zejména u velmi rozsáhlých tabulek to může samozřejmě trvat určitý čas. Tento problém lze obejít tím, že se přímo sdělí prohlížeči, ze kolika sloupců tabulka skutečně sestává.
<table> <colgroup span="2"></colgroup> <tr> <th>ISBN</th> <th>Titul</th> <th>Cena</th> </tr> <tr> <td>23223423434</td> <td>Krátké dějiny téměř všeho</td> <td>29,95 eur</td> </tr> </table>
Pomocí colgroup
se zahájí předdefinování sloupcových informací. Všimněte si, že většina atributů dostupných v dřívějších verzích HTML pro colgroup
již v HTML5 není povolena. Ze všech je nyní povolen pouze atribut span
. Jako hodnotu očekává tento atribut span počet sloupců v tabulce.
Prvek colgroup
je umístěn přímo za zahajujícím <table>
. Sloupce samotné jsou pak definovány jednotlivými prvky col
.
Při použití colgroup
jsou obecně k dispozici dvě možnosti:
• S atributem span
• Bez atributu span
Pokud není použit atribut span
, musí být uvnitř prvku colgroup
pro každý sloupec, který by měl být zahrnut v grupě sloupců, definován jednotlivý prvek col
. Všimněte si, že prvek col
je samostatný prvek.
<table> <colgroup> <col /> <col /> </colgroup> <tr> <th>ISBN</th> <th>Titul</th> <th>Cena</th> </tr> <tr> <td>23223423434</td> <td>Krátké dějiny téměř všeho</td> <td>29,95 eur</td> </tr> </table>
Existuje také hybridní forma.
<table> <colgroup> <col> </colgroup> <colgroup span="2"></colgroup> …
Tato metoda je vždy praktická, pokud je sloupec předdefinován samostatně, zatímco ostatní jsou seskupeny do jedné skupiny.