< Zpět na seznam lekcí
Obsah lekce:
Každá tabulka je struktura skládajících se z konečného počtu řádků. Každý řádek obsahuje konečný počet sloupců. Sloupci v rámci řádku říkáme buňka.
Každá tabulka v HTML stránce začíná značkou <table> a končí značkou </table>. Uvnitř tabulky se používají následující značky:
Na úvod vytvořme velmi jednoduchou tabulku obsahující dva řádky o dva sloupce.
<table>
<tr>
<td>POŘADÍ</td>
<td>Příjmení, Jméno</td>
</tr>
<tr>
<td>1</td>
<td>Světlík Jaromír</td>
</tr>
</table>
Na prvním řádku je značka pro začátek tabulky. Na dalším je značka pro začátek řádku. Následující dva řádky obsahují každý jednu buňku daného řádku. Na pátém řádku je řádek tabulky ukončen značkou pro konec řádku. Analogicky následuje další řádek a nakonec značka pro konec tabulky.
Výsledná tabulka vypadá v HTML stránce takto:
POŘADÍ | Příjmení, Jméno |
1 | Světlík Jaromír |
Vidíme,že je v prohlížeči stěží poznat, že se jedná skutečně o tabulku. Prvním zásadním problémem této tabulky je, že tabulka nemá okolo buněk žádné ohraničení a je těžké se v ní orientovat. Tento problém můžeme v běžném HTML řešit například atributem border v úvodní značce tabulky například takto: <table border="1">.
Výsledná tabulka vypadá v HTML stránce takto:
POŘADÍ | Příjmení, Jméno |
1 | Světlík Jaromír |
Nyní je již struktura tabulky celkem jasně viditelná. Zcela zřejmé problémy jsou zde dva:
V bězném html existuje u značky table atribut cellpadding (cell z angl. buňka, padding z angl. vycpávka), který má číselnou hodnotu (celé číslo z intervalu [0..n]) určující velikost okraje mezi vnitřním okrajem buňky jejím obsahem. V běžném html by situace mohla vypadat například takto:
<table cellpadding="5" border="1" >
<tr>
<td>POŘADÍ</td>
<td>Příjmení, Jméno</td>
</tr>
<tr>
<td>1</td>
<td>Světlík Jaromír</td>
</tr>
</table>
Výsledná tabulka vypadá v HTML stránce takto (zobrazení se v této stránce může lišit neboť tato obsahuje mnoho stylů - nejlépe je zkopírovat předešlý html kód tabulky do nové html stránky bez css stylů a zobrazit):
POŘADÍ | Příjmení, Jméno |
1 | Světlík Jaromír |
Zdálo by se tedy jasné, že zkrátka v každé tabulce ve vytvářené internetové prezentaci napíšeme požadovaný atribut s patřičnou hodnotou a vše bude vyřešeno. Uvědomme si ale, že pokud má naše prezentace více tabulek (zákazník může požadovat tabulek ve své prezentaci klidně několik desítek!), pak nastávají obtíže. První je ta, že patřičný atribut cellspacing musíme skutečně uvést všude (u každé tabulky). Druhý problém je, pokud například zákazník řekne, že v celé internetové prezentaci si přeje tuto mezeru v tabulkách jinou (větší či menší). Pak bychom museli ve všech tabulkách prezentace tuto hodnotu upravit. A to je zbytečná práce a komplikace navíc. Z tohoto důvodu vytvoříme pro všechny tabulky pravidla v CSS souboru pro naši internetovou prezentaci a jakýkoliv atribut vzhledu tabulek můžeme centrálně měnit na jediném místě. Samozřejmě není problém vytvořit i vzhledové odlišné tabulky a stylovat je pomocí CSS jinak než "běžné" tabulky v prezentaci.
Pojďme se tedy podívat na to, jak bude vypadat CSS pravidlo pro nastavení vlastnosti cellpadding našich tabulek. V CSS není vlastnost cellpadding, ale je zde vlastnost padding (obecná vnitřní mezera mezi okrajem html elementu a jeho obsahem). Co je vlastně elementem, u kterého si přejeme padding nastavit? Chceme udělat mezeru okolo obsahu buňky tabulky - požadovaným elementem ke stylování je tedy element <td> a jeho vlastnost padding.
td {padding: 10px;}
Po aplikaci tohoto pravidla v naší internetové prezentaci dojde k tomu, že všechny standardní tabulky budou mít v buňkách tuto mezeru.
POŘADÍ | Příjmení, Jméno |
1 | Světlík Jaromír |
Zbývá nám vyřešit problém rámečku tabulky. První, co by mohlo fungovat je použít css vlastnost border pro element table. Upozorněme na důležitý fakt, že vlastnost border musí mít nastavenu barvu, šířku rámečku a typ rámečku.
table {border-width: 1px; border-color: #666; border-style: solid;}
Tato tři nastavení lze zapsat stručněji jako souhrn takto:
table {border: 1px #666 solid;}
Jak taková tabulka vypadá vidíme níže. Okraj je skutečně pouze okolo tabulky jako celku a nikoli okolo jednotlivých buněk tabulky.
POŘADÍ | Příjmení, Jméno |
1 | Světlík Jaromír |
Pokusme se nyní napsat a aplikovat pravidlo pro nastavení okraje všem buňkám tabulky. Takové pravidlo bude analogické předchozímu s tím, že bude aplikováno na element td.
td {border: 1px #666 solid;}
Jak taková tabulka vypadá vidíme níže. Okraj je skutečně vykreslen i uvnitř tabulky kolem každé buňky.
POŘADÍ | Příjmení, Jméno |
1 | Světlík Jaromír |
Pokud bychom nechtěli mezeru mezi okrajem celé tabulky a buňkami, pak si můžeme pomoci buď atributem cellspacing=0 html značky table. Tento parametr nastavuje mezeru mezi jednotlivými buňkami neboli vnější mezeru buňek tabulky. Pokud je tato mezera rovna nule, pak mezi buňkami žádná mezera nebude a budou těsně vedle sebe.
<table cellspacing="0" >
<tr>
<td>POŘADÍ</td>
<td>Příjmení, Jméno</td>
</tr>
<tr>
<td>1</td>
<td>Světlík Jaromír</td>
</tr>
</table>
Výsledná tabulka:
POŘADÍ | Příjmení, Jméno |
1 | Světlík Jaromír |
Avšak ze stejných důvodů jako výše se tomuto budeme snažit vyhnout a budeme chtít tuto vlastnost nastavit jako css pravidlo.
table {border-spacing: 0;}
Jak taková tabulka vypadá vidíme níže.
POŘADÍ | Příjmení, Jméno |
1 | Světlík Jaromír |
S použitím libovolných elektronických informačních zdrojů vysvětlete a použijte CSS vlastnost border-collapse souvislosti s html elementem table. Ilustrujte použití této vlastnosti na příkladech.