Menu

Tabele w HTML: wiersze, kolumny, komórki nagłówka i podpisy

Jak zrobić tabelę w HTML: wiersze przez <tr>, komórki przez <td>, komórki nagłówka przez <th> i scope, podpisy, thead, tbody i tfoot, paski zebry oraz tabele przewijane na małych ekranach.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

Jak zrobić tabelę w HTML

Tabela to element <table> złożony z wierszy (<tr>), a każdy wiersz składa się z komórek: <th> dla komórek nagłówka i <td> dla komórek danych.

Tabela nie ma własnego obramowania; dodaje je jedyna reguła CSS, żeby było widać komórki. Kolumny wynikają z komórek: pierwsza komórka każdego wiersza to kolumna pierwsza, druga to kolumna druga i tak dalej. Każdy wiersz powinien mieć tyle samo komórek. Usuń <td>, a ten wiersz skończy się wcześniej i zostawi lukę.

Komórki <th> są domyślnie pogrubione i wyśrodkowane. To tylko wygląd; ważne jest to, że są etykietami, o czym mówi następna sekcja.

Elementy tabeli

ElementCzym jest
<table>Tabela
<caption>Tytuł tabeli, pierwsze dziecko <table>
<thead>Grupa wierszy nagłówka
<tbody>Grupa wierszy treści (tabela może mieć ich kilka)
<tfoot>Grupa wierszy stopki, na przykład z sumami
<tr>Wiersz
<th>Komórka nagłówka
<td>Komórka danych
<colgroup>, <col>Kolumny, do stylowania całej kolumny (szerokości, tło)

Obramowanie opisuje strona obramowanie tabeli w HTML, a komórki zajmujące kilka kolumn lub wierszy strona colspan i rowspan.

Komórki nagłówka, scope i caption

Tabela z nagłówkami u góry i z boku musi mówić, w którą stronę wskazuje każdy nagłówek. scope="col" opisuje kolumnę poniżej, scope="row" opisuje wiersz obok. <caption> nadaje tabeli widoczny tytuł:

Z takim kodem czytnik ekranu na komórce 14:00 może ogłosić "Saturday, Closes, 14:00", więc liczba nigdy nie jest czytana w oderwaniu. W prostej tabeli z jednym wierszem nagłówka przeglądarki zwykle same ustalają nagłówki bez scope, ale jego dopisanie nic nie kosztuje i eliminuje zgadywanie.

Podpis to też to, co czytnik ekranu ogłasza, gdy dojdzie do tabeli. Wybieraj go zamiast nagłówka umieszczonego nad tabelą, który nie jest z nią połączony.

thead, tbody i tfoot

Te trzy grupy dzielą wiersze na nagłówek, treść i stopkę. Stopka to miejsce na sumy:

Dwa szczegóły poprawiają czytelność liczb: text-align: end wyrównuje przecinki dziesiętne (każda cena ma dwa miejsca po przecinku), a font-variant-numeric: tabular-nums nadaje każdej cyfrze tę samą szerokość.

Jeśli napiszesz <tr> bezpośrednio w <table>, jak w pierwszym przykładzie, przeglądarka i tak doda <tbody> wokół wierszy. Dlatego selektor CSS taki jak table > tr nigdy niczego nie znajduje: na stronie wiersze są w tbody. Użyj table tr albo sam napisz <tbody>.

Stylowanie tabeli: paski, hover i szerokość

:nth-child nadaje paski co drugiemu wierszowi, :hover wyróżnia wiersz pod kursorem, a width: 100% rozciąga tabelę na szerokość kontenera:

text-align: start wyrównuje tekst nagłówka z danymi pod nim; w przeciwnym razie th jest wyśrodkowane. start zamiast left utrzymuje poprawne wyrównanie w językach pisanych od prawej do lewej.

Responsywne tabele z przewijaniem

Tabela nie może być węższa niż jej treść. Na telefonie szeroka tabela wypycha całą stronę na boki. Obejmij ją kontenerem, który się przewija:

Kontener ma tu limit 300 pikseli, żeby udawać ekran telefonu; przewiń go na boki. tabindex="0" pozwala użytkownikom klawiatury ustawić fokus na kontenerze i przewijać go strzałkami, a role="region" z aria-label nadaje temu przystankowi nazwę.

Tabele są do danych

Używaj tabeli, gdy treść naprawdę ma wiersze i kolumny: ceny, harmonogramy, porównania, wyniki. Nie używaj jej do ustawiania rzeczy obok siebie na stronie. Tabele do układu mylą czytniki ekranu, które ogłaszają wiersze i kolumny bez żadnego znaczenia, i nie dopasowują się do małych ekranów. Układem zajmują się flexbox i grid w CSS.

Częste błędy

  • Wiersze z różną liczbą komórek. Krótsze wiersze kończą się wcześniej, a kolumny przestają się wyrównywać.
  • <td> z pogrubionym tekstem jako nagłówki. Użyj <th>, żeby nagłówki były prawdziwymi etykietami.
  • Przestarzałe atrybuty border, cellpadding, cellspacing, bgcolor i align. Użyj CSS.
  • Treść bezpośrednio w <tr> lub <table>, poza jakąkolwiek komórką. Przeglądarki przenoszą ją poza tabelę, zwykle nad nią.
  • Nagłówek nad tabelą zamiast <caption>.
  • table > tr w CSS. Przeglądarka wstawiła <tbody>; pisz table tr albo tbody tr.

Najczęściej zadawane pytania

Jak utworzyć tabelę w HTML?

Obejmij ją znacznikiem <table>, napisz jeden <tr> na każdy wiersz, a w środku umieść komórki: <th> dla komórek nagłówka i <td> dla komórek danych. Każdy wiersz powinien mieć tyle samo komórek, chyba że niektóre komórki zajmują kilka kolumn.

Czym różni się th od td?

<th> to komórka nagłówka, która opisuje kolumnę lub wiersz, a <td> to komórka danych. Przeglądarki pokazują <th> pogrubione i wyśrodkowane, a czytniki ekranu czytają pasujący nagłówek przed każdą komórką danych, żeby liczby miały sens.

Co robią thead, tbody i tfoot?

Grupują wiersze w nagłówek, treść i stopkę (sumy) tabeli. Czynią strukturę jasną dla technologii wspomagających, dają CSS punkt zaczepienia, a przy drukowaniu długiej tabeli przeglądarki mogą powtarzać <thead> na każdej stronie.

Dlaczego moja tabela HTML nie ma obramowania?

Tabele domyślnie nie mają obramowania. Dodaj je w CSS: table { border-collapse: collapse; } th, td { border: 1px solid #ccc; }. Stary atrybut border="1" jest przestarzały.

Jak zrobić responsywną tabelę HTML?

Umieść tabelę w kontenerze z overflow-x: auto. Na wąskim ekranie tabela przewija się na boki wewnątrz kontenera, zamiast poszerzać całą stronę.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ