Táblázatok viszonylag bonyolult szerkezetek, amelyek sorokból és oszlopokból állnak. A táblázat külső váza mindig a table elemet alkotja.
<table> … </table>
Ennek az elemnek a keretein belül történik a tábla valódi meghatározása. Egyébként ajánlott egy keretet hozzárendelni az HTML-ben történő táblázat elkészítése közben. Így könnyebben nyomon követhető, hogy a sorok és oszlopok pontosan hol futnak. Ehhez az indító <table> elemben az border="1" attribútum-érték párost kell hozzárendelni. (Figyelem: Az border attribútumot nem ajánlott használni HTML-ben. Ehelyett a megfelelő CSS tulajdonságokra kell támaszkodni. Erről azonban később lesz szó).
<table border="1"> … </table>
Folytatjuk a táblázat sorainak meghatározásával. Ezt az tr elem segítségével lehet megtenni.
<table border="1"> <tr></tr> </table>
Ez azonban még nem vezet a kívánt kimenethez. A következő lépésben a oszlopokat kell definiálni. Ezt újra a td elem segítségével tehetjük meg.
<table border="1">
<tr>
<td></td>
</tr>
</table>Most már definiálhatjátok az első táblázattartalmat. Ezt a <td> és </td> között kell meghatározni.
<table border="1">
<tr>
<td>Tartalom 1</td>
</tr>
</table>
Most már érdemes megnézni az eredményt a böngészőben.
Ez még korántsem túl látványos, hiszen jelenleg a tábla csak egy cellából áll. Most hozzáadhattok még egy oszlopot. Ezt újra egy td elem segítségével tehetitek meg. Ügyeljetek arra, hogy ezt a tr elemen belül határozzátok meg.
<table border="1">
<tr>
<td>Tartalom 1</td>
<td>Tartalom 2</td>
</tr>
</table>
Itt ismét egy pillantás az eredményre.
További sorok hozzáadásához egyszerűen hozzá kell adni egy további tr elemet, amelyben az újabb td elemeket lehet meghatározni.
Itt ismét egy példa:
<table border="1">
<tr>
<td>Tartalom 1</td>
<td>Tartalom 2</td>
</tr>
<tr>
<td>Tartalom 3</td>
<td>Tartalom 4</td>
</tr>
</table>
Egy pillantás az eredményre a böngészőben:
Ezen módszerrel tehát bonyolultabb táblázatokat is létrehozhattok.
Fejrész, Törzs és Lábrész megadása
A táblázatok logikai részekre oszthatók. Ezek egy fejrészt, egy vagy több adatrészt és egy lábrészt foglalhatnak magukban. A következő példa mutatja, hogyan is nézhet ki ez:
<table border="1">
<thead>
<tr>
<th>Indulás</th>
<th>Érkezés</th>
<th>Peron</th>
</tr>
</thead>
<tfoot>
<tr>
<td>Berlin</td>
<td>Stralsund</td>
<td>5</td>
</tr>
</tfoot>
<tbody>
<tr>
<td>Berlin</td>
<td>Hamburg</td>
<td>1</td>
</tr>
<tr>
<td>München</td>
<td>Berlin</td>
<td>3</td>
</tr>
</tbody>
</table>A böngészőben ez látszódik:
Az így meghatározott részeknek nyilvánvalóan nincs vizuális hatása. Felmerül egy kérdés: Miért kell tehát erőfeszítést tenni ezeknek a részeknek a meghatározására? Két jó oka van ennek:
• CSS segítségével a részek különböző formátumban jeleníthetők meg igény szerint.
• A böngészők képesek hosszú táblázatok nyomtatásakor az összes oldalon megismételni a táblázat fej- és lábrészét.
A táblázat fejezetét <thead> nyitja meg. Ezt követik a táblázathoz tartozó fejrégió sorai. Ne felejtsétek el lezárni a fejrégiót </thead> elemmel.
Ha a táblázatnak lábrésze is kell, az feltétlenül meg kell előznie a törzsrész meghatározását. A lábrészt a <tfoot> eleme nyitja, melyet a lábrégiónak tartozó egy vagy több sor követhet. Zárjátok le a lábrészt a </tfoot> elemmel.
A törzsrész lényegi részét a tbody elem határozza meg. Ez a tbody többször is előfordulhat. A törzsrész mindig a </tbody> elem zárja le.
Miért lenne például egy táblázatban több tbody elem? Erre jó példa lehet a Bundesliga táblázata. Egy ilyen táblázatban általában több részleg van.
• Bajnok
• Bajnokok Ligája résztvevők
• Bajnokok Ligája-selejtezős
• Európa Liga résztvevők
• Szürke középmezőny
• Kiesés ellen védekező hely
• Kiesők
Minden ilyen részleget egy külön tbody elembe lehetne csomagolni, majd ezeket CSS segítségével különböző módon formázni.
Oszlopok előre meghatározása
Hogyan jelenik meg a táblázat a böngészőkben, természetesen elsősorban attól függ, hogy hány sor és oszlop van jelen. A tábla megjelenítése folyamata azonban nem olyan egyszerű a böngészők számára. Valójában a böngészőnek mindig teljesen be kell olvasnia a teljes táblázatot, mielőtt megjeleníthetné azt. Különösen hosszú táblázatok esetén ez természetesen bizonyos időt igénybe vehet. Ezt a problémát el lehet kerülni a böngészőnek közvetlenül közölve, hogy valójában hány oszlopból áll a táblázat.
<table>
<colgroup span="2"></colgroup>
<tr>
<th>ISBN</th>
<th>Cím</th>
<th>Ár</th>
</tr>
<tr>
<td>23223423434</td>
<td>Majdnem mindent magába foglaló rövid történet</td>
<td>29,95 euró</td>
</tr>
</table>
Az colgroup csoport _hárítja el a növekmény-megjelöléseket. Megjegyzés, hogy a colgroup számára a korábbi HTML verziókban elérhető attribútumok többsége már nem engedélyezett az HTML5-ben. Ezek közül most már csak a span attribútumot engedélyezik. A span az elemek számát várja értékként, amelyek a táblázatban szerepelnek.
A colgroup elem közvetlenül az indító <table> mögött helyezkedik el. Az oszlopokat magukat az egyes col elemek határozzák meg.
A colgroup használatakor alapvetően két lehetőség van:
• A span attribútum használatával
• A span attribútum nélkül
Ha nem használunk span attribútumot, akkor minden oszlop esetében, amelyre az oszlopcsoporthoz tartozó oszlopok kiterjednek, külön-külön definiálnunk kell egy-egy col elemet a colgroup elemen belül. Vegyük figyelembe, hogy a col önálló elem.
<table>
<colgroup>
<col />
<col />
</colgroup>
<tr>
<th>ISBN</th>
<th>Cím</th>
<th>Ár</th>
</tr>
<tr>
<td>23223423434</td>
<td>Majdnem mindent magába foglaló rövid történet</td>
<td>29,95 euró</td>
</tr>
</table>
Egyébként van egy vegyes forma is.
<table> <colgroup> <col> </colgroup> <colgroup span="2"></colgroup> …
Ez mindig praktikus, amikor egy oszlopot külön kell előre meghatározni, de a többit egy csoportba szeretnénk vonni.