Menu

colspan i rowspan w HTML: jak scalić komórki tabeli

Scalaj komórki tabeli w poziomie przez colspan i w pionie przez rowspan. Dowiedz się, jak liczyć komórki, żeby tabela się nie rozjechała, jak budować grupowane nagłówki i jak zachować czytelność scalonych tabel dla czytników ekranu.

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

colspan: jedna komórka na kilka kolumn

colspan="n" sprawia, że komórka ma szerokość n kolumn. Jej wiersz ma wtedy o n - 1 komórek mniej. Tutaj suma zajmuje dwie pierwsze kolumny:

Ostatni wiersz ma dwie komórki, ale pierwsza liczy się za dwie, więc wiersz nadal ma trzy kolumny jak pozostałe.

rowspan: jedna komórka na kilka wierszy

rowspan="n" sprawia, że komórka ma wysokość n wierszy. Wiersze poniżej pomijają tę kolumnę, bo wysoka komórka już ją wypełnia:

Wiersze Boba i Cy mają tylko jedno <td>: kolumnę Team zajmuje już "Design". W HTML nic tego nie oznacza, więc tabelę z rowspan czytaj z góry na dół i licz, które kolumny są wciąż zajęte.

colspan i rowspan razem: plan zajęć

Jedna komórka może się rozciągać w obu kierunkach. Klasyczny przykład to plan zajęć, w którym niektóre lekcje trwają dwa bloki, a inne obejmują dwa dni:

Policz wiersz 10:00: nagłówek z godziną, potem Mon zajęty przez HTML z wiersza wyżej, potem Lab wypełniający Tue i Wed. O 11:00 Mon jest znowu wolny, a Lab nadal zajmuje Tue i Wed, więc wiersz ma jedną komórkę z danymi.

Liczenie komórek, żeby tabela się nie rozjechała

Każdy wiersz musi mieć tę samą liczbę kolumn, licząc colspan każdej komórki i kolumny zajęte przez komórki z rowspan z góry. Gdy wiersz ma o jedną komórkę za dużo, przeglądarka dodaje dla niej nową kolumnę i tabela ma poszarpaną krawędź:

W błędnej tabeli drugi wiersz zapomina, że A zajmuje jego pierwszą kolumnę, więc D trafia do trzeciej kolumny, której nie ma żaden inny wiersz. Rozwiązanie to usunięcie jednej komórki. Ten sam błąd z colspan to zostawienie wszystkich pierwotnych komórek w wierszu, który ma szeroką komórkę.

Za mało komórek to odwrotny problem: wiersz kończy się za wcześnie i zostawia dziurę na końcu.

Grupowane nagłówki z colspan

Nagłówek może obejmować kolumny, które opisuje, nad wierszem bardziej szczegółowych nagłówków. Oznacz go scope="colgroup", żeby czytniki ekranu przypisały go do wszystkich kolumn pod nim:

"City" obejmuje oba wiersze nagłówka dzięki rowspan="2", a każdy miesiąc obejmuje swoje dwie kolumny dzięki colspan="2". Elementy <colgroup> definiują grupy kolumn, do których odnosi się scope="colgroup". Czytnik ekranu na komórce Rzymu 31 może wtedy powiedzieć "Rome, July, High, 31". Resztę struktury tabeli opisuje strona tabele w HTML.

Scalaj tylko przy prawdziwej strukturze

Scalenia utrudniają czytanie tabeli czytnikiem ekranu oraz jej sortowanie, filtrowanie i kopiowanie do arkusza kalkulacyjnego. Używaj ich tam, gdzie dane naprawdę są pogrupowane (suma, nagłówek nad podkolumnami, zajęcia trwające dwie godziny). Jeśli tabela potrzebuje wielu scaleń, dwie prostsze tabele są często czytelniejsze.

Częste błędy

  • Pozostawienie zajętych komórek. Komórka z colspan="2" zastępuje dwie komórki; usuń jedną z pierwotnych.
  • Zapominanie o wierszach pod rowspan. Każdy z nich potrzebuje o jedną komórkę mniej.
  • Pisanie colspan na <tr>. Działa tylko na <td> i <th>.
  • Scalenia do układu wizualnego, np. wiersz z banerem w tabeli układającej stronę. Do układu używaj CSS grid.
  • colspan="100%" w znaczeniu "cała szerokość". Przeglądarka czyta tylko początkowe cyfry, więc ta komórka obejmuje 100 kolumn i dodaje do tabeli puste kolumny. Wartość to całkowita liczba kolumn.

Najczęściej zadawane pytania

Do czego służy colspan w HTML?

colspan rozciąga <td> lub <th> na kilka kolumn: <td colspan="3"> zajmuje w swoim wierszu miejsce trzech komórek. Ten wiersz potrzebuje wtedy o dwie komórki mniej niż pozostałe.

Do czego służy rowspan w HTML?

rowspan rozciąga komórkę w dół na kilka wierszy: <td rowspan="2"> wypełnia swój wiersz i ten poniżej. Następny wiersz musi pominąć tę kolumnę, bo komórka powyżej już ją zajmuje.

Czy komórka może mieć jednocześnie colspan i rowspan?

Tak. <td colspan="2" rowspan="2"> zajmuje blok dwóch kolumn na dwa wiersze. Każdy wiersz, przez który przechodzi, potrzebuje o dwie własne komórki mniej.

Dlaczego z mojej tabeli wystaje dodatkowa komórka?

Po uwzględnieniu scaleń jakiś wiersz ma więcej komórek niż pozostałe. Zwykle wiersz pod rowspan nadal zawiera komórkę dla zajętej kolumny albo wiersz z colspan zachował wszystkie pierwotne komórki. Usuń nadmiarowe <td>.

Jaka jest maksymalna wartość colspan?

Przeglądarki ograniczają colspan do 1000, a rowspan do 65534. W przypadku colspan wartość 0 albo taka, która nie zaczyna się od cyfry, jest traktowana jak 1.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ