Według badania Google przeprowadzonego w grudniu 2005 roku, element <table> jest dziewiątym z najpopularniejszych elementów HTMLa, występującym w ponad 80% stron. Aż się nie chce wierzyć, że tyle stron zawiera jakieś dane tabelaryczne. A taki by z tego płynął wniosek, jeślibym w swej naiwności założył, że wszyscy używają elementów zgodnie z przeznaczeniem. Wyjaśnienie jest proste. Zdecydowana większość obecnych stron zbudowana jest na tabelkach. Sposób został “odkryty” gdzieś pod koniec lat 90., jest bardzo popularny do dzisiaj i pewnie przez jakiś czas się od niego nie uwolnimy.
Ale czemu nie tabelkami?
Na początek rzecz mało istotna: Tabela to tabela. “Zbiór danych zapisanych w kolumnach i rzędach”, cytując “Inny słownik języka polskiego PWN”. Strona nie jest tabelą. Strona może być co najwyżej czymś, co naśladuje wyglądem tabelę. A co odpowiada za wygląd strony? HTML? Źle, pała. CSS. Napisałem na początku, że to mało istotne, bo semantyka nie jest na razie czymś, co by przynosiło wymierne korzyści. To bardziej idea tworzenia sieci, która wybiega nieco w przyszłość. Jest coś ważniejszego, co jest potrzebne Internetowi tu i teraz. Dostępność i szybkość.
Osób niepełnosprawnych jest na świecie mało w stosunku do populacji sprawnego społeczeństwa. Bogu dzięki. A jednak ludzie są humanitarni i wprowadzili szereg ustaw, które mają tym osobom ułatwić życie. Przy instytucjach rządowych obok schodów mamy podjazdy dla wózków inwalidzkich (czasami nawet windy, ale to raczej nie w naszym kraju), na parkingach (wiecznie puste) wydzielone miejsca parkowania. Taka przynajmniej jest teoria i dotyczy ona również sieci. Strony instytucji państwowych mają obowiązek przestrzegania reguł WAI (w większości nie przestrzegają). A my? Wiadomo, że nie zbudujemy inwalidom podjazdu pod nasz dom, bo to kosztuje. Ale przebudowa naszej strony z myślą o dostępności jest darmowa (oczywiście w teorii). Niepełnosprawni mają swoje wózki – choćby w postaci przeglądarek głosowych – ale żeby były przydatne, potrzebują jeszcze podjazdu. Wiesz, jak przeglądarka głosowa odczytuje tabelę? Tak jakby ona rzeczywiście była tabelą. A nie układem strony udającym tabelę.
No i doszliśmy do prędkości ładowania strony. Owszem, strona oparta na tabelkach jest czasem mniejsza od tej zbudowanej na HTMLu i CSSie. Owszem, pojedyncza. Każda odwiedzana podstrona będzie ładować się tak samo długo, podczas gdy przy inteligentnym zastosowaniu arkuszy stylów za kolejnymi razami pobrana zostanie tylko sama treść strony, bez wyglądu. Zresztą, w 90% przypadków strony “tabelkowe” są kilkakrotnie większe od “divowych”.
Ale jak nie tabelkami to czym?
Póki nie zostanie opracowany HTML 5 (a do tego jeszcze sporo czasu), najsensowniejszym rozwiązaniem wydaje się wygląd oparty na divach i arkuszach stylów (maniacy semantyki mogą spróbować sił w XMLu już teraz). Nie jest to wcale trudne, a przynosi spore korzyści i olbrzymie możliwości. Jest w Internecie mnóstwo stron, które opisują, jak to zrobić. Sam w niedalekiej przyszłości zamierzam coś na łamach bloga na ten temat skrobnąć.
Na koniec zaznaczam, że nie potępiam wszystkich tabelek. Po pierwsze, do czegoś ten element służy i nie należy danych tabelarycznych przedstawiać divami. Po drugie, dobre przemyślenie układu na tabelach pozwala nieco zredukować jego wady.

drobna rada:
niejednokrotnie przydatne ciagle takie same formatowanie np jednej kolumny dosyc dlugiej tabeli. wiekszoac webmajsterow robi to przez ciagle definiowanie tych samych danych dla kazdego kolejnego – blad -> wystarczy zdefnioniowac sobei kalse w CSS i ja powielic – przy dlugich i schematycznych tabelach potrafi to zmniejszyc kod html drastycznie.
jest : kazdego kolejnego – blad
powinno byc: kazdego kolejnego elementu td – blad
widze ze z komentarzy wycinane sa elementy html zamiast zamienione na ascii
Tak, znowu nic dodać nic ująć – chyba.
Autor: t0mcioo ma rację.
3ED: w czym ma rację? Że wycinane są elementy html zamiast zamieniane na ascii? Wiem, ale niestety nie mam na to wpływu.