Poradnik Webmastera

Kanał ATOM

Zapisz się na darmowy newsletter:
E-mail:

Imię:

Zgadzam się z Polityką Prywatności

Po zapisaniu się otrzymasz ten ebook:
Jak zwiększyć ruch na stronie WWW? 120 praktycznych wskazówek
Pozycjonowanie dzięki:
Darmowe Pozycjonowanie
Valid XHTML 1.0 Strict
Poprawny CSS!

Tabele - Kurs języka HTML

Bardzo wiele danych wygodnie jest prezentować w formie tabelarycznej, np. różnego rodzaju zestawienia. Z tego powodu w języku HTML wprowadzono zestaw znaczników pozwalających na tworzenie tabel. Jak się okazało później, te znaczniki pozwoliły także na precyzyjne rozmieszczenie poszczególnych elementów na stronie, przez co możliwe stało się tworzenie stron których szata graficzna wykraczała poza to co oferowały pozostałe znaczniki.

Podstawy tworzenia tabel w HTML

Przy tworzeniu tabeli podstawę stanowią następujące znaczniki:

  • <table> - ten znacznik stanowi "ramę" wewnątrz której zawiera się cała definicja tabeli;
  • <tr> - ten znacznik służy do zdefiniowania pojedynczego wiersza tabeli. W jego obrębie muszą znajdować się definicje poszczególnych komórek tabeli;
  • <td> - ten znacznik z kolei służy do zdefiniowania pojedynczej komórki tabeli;
  • <th> - znacznik ten podobnie jak znacznik <td> definiuje pojedynczą komórkę tabeli. Różnica jest jednak taka że znacznik <th> tworzy komórkę nagłówka - test w takiej komórce jest pogrubiony.

Przykładowa tabela może zatem wyglądać następująco:

<table>
    <tr>
        <th>11</th>
        <th>12</th>
        <th>13</th>
    </tr>
    <tr>
        <td>21</td>
        <td>22</td>
        <td>23</td>
    </tr>
    <tr>
        <td>31</td>
        <td>32</td>
        <td>33</td>
    </tr>
</table>

11 12 13
21 22 23
31 32 33

Sposób w jaki rozłożone są znaczniki w przykładzie powyżej nie jest obowiązkowy - można także zapisać wszystko w jednej linii, można również umieścić definicję każdej komórki w jednym wierszu. Tutaj rozmieściłem to tak aby było to w miarę czytelne. Także z tego powodu wstawiłem spacje pomiędzy definicjami poszczególnych komórek i wierszy.

Modyfikowanie wyglądu tabeli

Wygląd gotowej tabeli można modyfikować na wiele sposobów, na przykład za pomocą parametrów znacznika <table>. Dostępne są atrybuty pozwalające na określenie następujących parametrów tworzonej tabeli:

  • grubość obramowania wokół tabeli - atrybut border. Jako wartość podaje się jakie grube ma być to obramowanie (w pikselach):
    <table border="5">
    <tr>
    <td>11</td><td>12</td>
    </tr><tr>
    <td>21</td><td>22</td>
    </tr>
    </table>

    1112
    2122
    W przypadku gdy nie poda się wartości, przeglądarka przyjmie wartość domyślną, która jest zależna od przeglądarki:
    <table border>
    <tr>
    <td>11</td><td>12</td>
    </tr><tr>
    <td>21</td><td>22</td>
    </tr>
    </table>

    1112
    2122
  • wielkość odstępu pomiędzy komórkami (w pikselach) - atrybut cellspacing:
    <table border="1" cellspacing="10">
    <tr>
    <td>11</td><td>12</td>
    </tr><tr>
    <td>21</td><td>22</td>
    </tr>
    </table>

    1112
    2122
  • wielkość odstępu pomiędzy zawartością komórki a jej obramowaniem (w pikselach) - atrybut cellpadding:
    <table border="1" cellpadding="10">
    <tr>
    <td>11</td><td>12</td>
    </tr><tr>
    <td>21</td><td>22</td>
    </tr>
    </table>

    1112
    2122
  • szerokość tabeli - atrybut width. Można ją określić w pikselach lub w procentach szerokości elementu wewnątrz którego tabela jest umieszczona (jeżeli nie jest w żadnym, to brana jest szerokość okna przeglądarki):
    <table border="1" width="200">
    <tr>
    <td>11</td><td>12</td>
    </tr><tr>
    <td>21</td><td>22</td>
    </tr>
    </table>
    <br>
    <table border="1" width="50%">
    <tr>
    <td>11</td><td>12</td>
    </tr><tr>
    <td>21</td><td>22</td>
    </tr>
    </table>

    1112
    2122

    1112
    2122
  • wysokość tabeli (w pikselach) - atrybut height.
    Uwaga: Atrybut ten nie jest co prawda oficjalną częścią standardu HTML, ale jest interpretowany przez większość przeglądarek. Zamiast niego powinno się jednak stosować odpowiednie polecenie kaskadowych arkuszy stylów CSS:
    <table border="1" height="100">
    <tr>
    <td>11</td><td>12</td>
    </tr><tr>
    <td>21</td><td>22</td>
    </tr>
    </table>
    <table border="1" style="height: 100px">
    <tr>
    <td>11</td><td>12</td>
    </tr><tr>
    <td>21</td><td>22</td>
    </tr>
    </table>

    1112
    2122
  • kolor tła tabeli - atrybut bgcolor. Jako wartość należy podać nazwę koloru lub jego kod szesnastkowy (przykładową listę kodów kolorów znajdziesz w artykule Bezpieczna paleta kolorów). Atrybut ten nie jest zalecany - zamiast niego powinno się stosować odpowiednie polecenie kaskadowych arkuszy stylów CSS:
    <table border="1" bgcolor="yellow">
    <tr>
    <td>11</td><td>12</td>
    </tr><tr>
    <td>21</td><td>22</td>
    </tr>
    </table>
    <table border="1" style="background-color: yellow">
    <tr>
    <td>11</td><td>12</td>
    </tr><tr>
    <td>21</td><td>22</td>
    </tr>
    </table>

    1112
    2122
  • obrazek jako tło tabeli - atrybut background.
    Uwaga: Atrybut ten nie jest co prawda oficjalną częścią standardu HTML, ale jest interpretowany przez większość przeglądarek. Zamiast niego powinno się jednak stosować odpowiednie polecenie kaskadowych arkuszy stylów CSS:
    <table border="1" background="tlo.gif">
    <tr>
    <td>11</td><td>12</td>
    </tr><tr>
    <td>21</td><td>22</td>
    </tr>
    </table>
    <table border="1" style="background: url(tlo.gif)">
    <tr>
    <td>11</td><td>12</td>
    </tr><tr>
    <td>21</td><td>22</td>
    </tr>
    </table>

    1112
    2122
  • wyrównanie tabeli do brzegów dokumentu - atrybut align. Dostępne są wartości: left - wyrównanie do lewej (wartość domyślna), center - wyrównanie do środka, right - wyrównanie do prawej strony. Dodatkowo przy zastosowaniu tego parametru tekst będzie odpowiednio "oblewał" tabelę. Atrybut ten nie jest zalecany - zamiast niego powinno się stosować odpowiednie polecenie kaskadowych arkuszy stylów CSS:
    <table border="1" align="right">
    <tr>
    <td>11</td><td>12</td>
    </tr><tr>
    <td>21</td><td>22</td>
    </tr>
    </table>
    tekst tekst<br>
    tekst tekst<br>
    tekst tekst
    <table border="1" style="float: right">
    <tr>
    <td>11</td><td>12</td>
    </tr><tr>
    <td>21</td><td>22</td>
    </tr>
    </table>
    tekst tekst<br>
    tekst tekst<br>
    tekst tekst

    1112
    2122
    tekst tekst
    tekst tekst
    tekst tekst

Kolejne parametry - dotyczące sposobu rysowania obramowania oraz linii wewnętrznych tabeli - zostaną podane poniżej, po podaniu metody grupowania kolumn.

Modyfikowanie wyglądu wierszy

znacznik <tr> (definiujący wiersz tabeli) także może posiadać parametry. Oto one:

  • wyrównanie tekstu w komórkach w wierszu - atrybut align. Dostępne są wartości: left, center i right. Przykład:
    <table border="1" width="200">
    <tr align="center">
    <td>11</td><td>12</td>
    </tr><tr align="right">
    <td>21</td><td>22</td>
    </tr>
    </table>

    1112
    2122
  • wyrównanie tekstu w pionie w komórkach w wierszu - atrybut valign. Dostępne są wartości: top - wyrównanie do góry komórki, middle - wyrównanie do połowy wysokości komórki (wartość domyślna), bottom - wyrównanie do dołu komórki. Przykład:
    <table border="1" width="200" style="height: 100px">
    <tr valign="top">
    <td>11</td><td>12</td>
    </tr><tr valign="bottom">
    <td>21</td><td>22</td>
    </tr>
    </table>

    1112
    2122
  • kolor tła komórek w wierszu - atrybut bgcolor. Jako wartość należy podać nazwę koloru lub jego kod szestnaskowy. Atrybut ten nie jest zalecany - zamiast niego powinno się stosować odpowiednie polecenie kaskadowych arkuszy stylów CSS:
    <table border="1">
    <tr bgcolor="red">
    <td>11</td><td>12</td>
    </tr><tr bgcolor="yellow">
    <td>21</td><td>22</td>
    </tr>
    </table>
    <table border="1">
    <tr style="background-color: red">
    <td>11</td><td>12</td>
    </tr><tr style="background-color: yellow">
    <td>21</td><td>22</td>
    </tr>
    </table>

    1112
    2122

Modyfikowanie wyglądu komórek

Znaczniki definiujące komórki tabeli - <td> i <th> - także posiadają parametry. Oto one:

  • wyrównanie tekstu w komórce - atrybut align. Dostępne są następujące wartości: left, center i right. Przykład:
    <table border="1" width="200">
    <tr>
    <td align="right">11</td><td align="center">12</td>
    </tr><tr>
    <td align="left">21</td><td>22</td>
    </tr>
    </table>

    1112
    2122
  • wyrównanie zawartości komórki w pionie - atrybut valign. Dostępne są wartości: top, middle i bottom. Przykład:
    <table border="1" width="200" style="height: 100px">
    <tr>
    <td valign="top">11</td><td valign="middle">12</td>
    </tr><tr>
    <td valign="bottom">21</td><td>22</td>
    </tr>
    </table>

    1112
    2122
  • szerokość komórki (w pikselach lub w procentach szerokości tabeli) - atrybut width. Atrybut ten nie jest zalecany - zamiast niego powinno się stosować odpowiednie polecenie kaskadowych arkuszy stylów CSS:
    <table border="1">
    <tr>
    <td width="50">11</td><td width="100">12</td>
    </tr><tr>
    <td>21</td><td>22</td>
    </tr>
    </table>
    <br>
    <table border="1" width="200">
    <tr>
    <td width="30%">11</td><td width="70%">12</td>
    </tr><tr>
    <td>21</td><td>22</td>
    </tr>
    </table>
    <table border="1">
    <tr>
    <td style="width: 50px">11</td><td style="width: 100px">12</td>
    </tr><tr>
    <td>21</td><td>22</td>
    </tr>
    </table>
    <br />
    <table border="1" width="200">
    <tr>
    <td style="width: 30%">11</td><td style="width: 70%">12</td>
    </tr><tr>
    <td>21</td><td>22</td>
    </tr>
    </table>

    1112
    2122

    1112
    2122
  • wysokość komórki (w pikselach lub w procentach wysokości tabeli) - atrybut height. Atrybut ten nie jest zalecany - zamiast niego powinno się stosować odpowiednie polecenie kaskadowych arkuszy stylów CSS:
    <table border="1">
    <tr>
    <td height="20">11</td><td>12</td>
    </tr><tr>
    <td height="40">21</td><td>22</td>
    </tr>
    </table>
    <br>
    <table border="1" height="100">
    <tr>
    <td height="30%">11</td><td>12</td>
    </tr><tr>
    <td height="70%">21</td><td>22</td>
    </tr>
    </table>
    <table border="1">
    <tr>
    <td style="height: 20px">11</td><td>12</td>
    </tr><tr>
    <td style="height: 40px">21</td><td>22</td>
    </tr>
    </table>
    <br>
    <table border="1" style="height: 100px">
    <tr>
    <td style="height: 30%">11</td><td>12</td>
    </tr><tr>
    <td style="height:70%">21</td><td>22</td>
    </tr>
    </table>

    1112
    2122

    1112
    2122
  • kolor tła w komórce - atrybut bgcolor. Jako jego wartość należy podać nazwę koloru lub jego kod szestnastkowy. Atrybut ten nie jest zalecany - zamiast niego powinno się stosować odpowiednie polecenie kaskadowych arkuszy stylów CSS:
    <table border="1">
    <tr>
    <td bgcolor="red">11</td><td bgcolor="green">12</td>
    </tr><tr>
    <td bgcolor="yellow">21</td><td bgcolor="blue">22</td>
    </tr>
    </table>
    <table border="1">
    <tr>
    <td style="background-color: red">11</td>
    <td style="background-color: green">12</td>
    </tr><tr>
    <td style="background-color: yellow">21</td>
    <td style="background-color: blue">22</td>
    </tr>
    </table>

    11 12
    21 22
  • obrazek użyty jako tło komórki - atrybut background.
    Uwaga: Ten atrybut nie jest częścią standardu HTML, jednakże jest interpretowany przez najpopularniejsze przeglądarki. Zalecane jest użycie poleceń kaskadowych arkuszy stylów CSS zamiast niego. Przykład:
    <table border="1">
    <tr>
    <td background="tlo.gif">11</td><td>12</td>
    </tr><tr>
    <td>21</td><td>22</td>
    </tr>
    </table>
    <table border="1">
    <tr>
    <td style="background: url(tlo.gif)">11</td><td>12</td>
    </tr><tr>
    <td>21</td><td>22</td>
    </tr>
    </table>

    1112
    2122
  • połączenie komórek w wierszu - atrybut colspan. Niekiedy konieczne jest stworzenie tabeli, gdzie zachodzi potrzeba połączenia kilku komórek w jedną. Za pomocą tego parametru można połączyć kilka komórek w wierszu - jako parametr podaje się liczbę łączonych komórek. Po połączeniu, zawartość "większej" komórki podaje się jednokrotnie:
    <table border="1" width="100" style="height: 100px">
    <tr>
    <td>11</td><td>12</td><td>13</td>
    </tr><tr>
    <td colspan="2">21,22</td><td>23</td>
    </tr><tr>
    <td>31</td><td>32</td><td>33</td>
    </tr>
    </table>

    111213
    21,2223
    313233
  • połączenie komórek w kolumnie - atrybut rowspan. Za pomocą tego parametru łączy się komórki w kolumnie w jedną większą - obowiązują te same reguły co przy atrybucie colspan:
    <table border="1" width="100" style="height: 100px">
    <tr>
    <td>11</td><td rowspan="2">12,22</td><td>13</td>
    </tr><tr>
    <td>21</td><td>23</td>
    </tr><tr>
    <td>31</td><td>32</td><td>33</td>
    </tr>
    </table>

    1112,2213
    2123
    313233
    Ponieważ równocześnie można podać kilka parametrów, możliwe jest połączenie kilku komórek w sąsiadujących wierszach i kolumnach w jedną, co wymaga podania równocześnie parametrów colspan i rowspan:
    <table border="1" width="100" style="height: 100px">
    <tr>
    <td colspan="2" rowspan="2">11,12,21,22</td><td>13</td>
    </tr><tr>
    <td>23</td>
    </tr><tr>
    <td>31</td><td>32</td><td>33</td>
    </tr>
    </table>

    11,12,21,2213
    23
    313233
  • wyłączenie łamania tekstu w komórce - atrybut nowrap. Użycie tego atrybutu powoduje że zdania wpisane do komórki nie powinny być łamane w celu podziału na wiersze, ale pozostać w jednym wierszu. Może to spowodować że przeglądarka będzie musiała wyświetlić tabelę szerszą niż okno przeglądarki, co zmusi osobę oglądającą co przewijania strony.
    <table border="1">
    <tr><td>11</td><td>12</td>
    </tr><tr>
    <td>21</td><td nowrap>bardzo długi tekst bardzo długi tekst bardzo długi tekst bardzo długi tekst bardzo długi tekst bardzo długi tekst bardzo długi tekst bardzo długi tekst bardzo długi tekst bardzo długi tekst bardzo długi tekst bardzo długi tekst bardzo długi tekst</td></tr>
    </table>
    Ponieważ przykład ten spowodowałby "zepsucie" wyglądu tej strony, został umieszczony w osobnym pliku - kliknij tutaj aby go obejrzeć.

Nagłówek tabeli

Tabelę można także zaopatrzyć w tytuł, wstawiany za pomocą znacznika <caption>. Znacznik ten umieszcza się zaraz po znaczniku <table>:

<table border="1" width="400">
<caption>Tytuł tabeli</caption>
<tr>
<td>11</td><td>12</td>
</tr><tr>
<td>21</td><td>22</td>
</tr>
</table>

Tytuł tabeli
1112
2122

Tytuł ten można także wyrównać do jednego z brzegów tabeli, stosując parametr align, który może przyjmować wartości: left, center (wartość domyślna) i right. Atrybut ten nie jest zalecany - zamiast niego powinno się stosować odpowiednie polecenie kaskadowych arkuszy stylów CSS. Dodatkowo atrybut ten nie działa wszędzie poprawnie - Netscape (wersja 6) nie interpretuje w ogóle tego parametru, a Opera (wersja 6) ma z nim problemy - przy wyrównaniu do prawej napis jest na wysokości pierwszego wiersza tabeli w połowie szarego pola po prawej stronie tabeli, przy wyrównaniu do lewej jest w podobnej odległości od tabeli na białym polu po lewej. W przypadku użycia stylów CSS tytuł jest wyświetlany poprawnie.

<table border="1" width="400">
<caption align="right">Tytuł tabeli</caption>
<tr>
<td>11</td><td>12</td>
</tr><tr>
<td>21</td><td>22</td>
</tr>
</table>
<table border="1" width="400