Przyjaciół trzymaj blisko, a tabele htmlowe jeszcze bliżej...
25.06.2010 12:01
Ten zły, ten dobry i ten obojętny… Tag «table» to bez wątpienia największy twórca kontrowersji w Internecie. Bywało z nim różnie, ale chłopak wciąż się trzyma dzielnie i mam nadzieje, nie prędko umrze… ale powoli się na to zanosi. A drugiego takiego jak on, to nie znajdziemy.
I'm «table», «tr» «td» «table».
Parafrazując słynnego Agenta Jej królewskiej Mości. «table» to bez wątpienia agent do zadań specjalnych, choć w przeciwieństwie do alkoholi Bonda miesza, ale nie wstrząsa młodymi twórcami stron. Tag ten pojawił się dawno, dawno temu gdy strony HTML jeszcze miały formę podłużną wertykalną. Służył on do jednego i był w tym bardzo dobry - tworzył tabele. Szok! Ale nie kłamie. Oryginalnym zamysłem twórców tego niezbyt intuicyjnego w użyciu tagu było prezentowanie treści tabelarycznej. Co to jest treść tabelaryczna chyba mówić nie musze.
Z początku wydaje się, iż sposób w jaki działa «table» jest niezwykle skomplikowany. Do momentu w którym go zrozumiemy... a wtedy, wydaje się banalny. Moglibyśmy wręcz pomyśleć, że innego sposobu nie ma, aby w zawiłym Internecie, w sposób formalny zapisać tabele, którą chcemy pokazać innym.
Znacznik «table» do tej pory pozostaje lekko enigmatycznym stworzeniem, które gdy już wydaje się, że je pojęliśmy, zaskakuje nas czymś nowym. Zwłaszcza młodych adeptów ciemnej strony html'a.
Ja nie potrafię? Ja nie potrafię!? Daj strzelbę!
Pewnego dnia, ktoś, aby mu kastracja miłą była, wpadł na pomysł aby strona internetowa była ładna, i nie było by w tym nic zdrożnego, gdyby nie to, że nie miał żadnych środków, aby tę wspomnianą ładność uzyskać. Ale co to… przecież można by użyć tabel do stworzenia schematu wyglądu, powstawiać w komórki elementy i jak to mawiają polscy francuzi - wuala!
Przychodzi MacGyver do sklepu i mówi do ekspedientki - Poproszę skrzynkę z narzędziami. - Nie mamy. - To poproszę «table» «tr» «td».
Żarty, żartami, ale przez ostatnie kilka lat Internet cierpiał. Wszyscy domorośli i nie tylko, tfórcy stron WWW korzystali z tabeli jako złotego rogu na wszelkie bolączki.
Przycisk ma być po prawej stronie. Tabela! Obrazek na lewo od tekstu. Tabela! Podpis pod obrazkiem. Tabela! Lista numerowana. Tabela, Tabela i jeszcze raz wielka, ogromna, wolno renderująca się i niezrozumiała dla normalnych ludzi Tabela! Oł je!
Nikt nic nie miał przeciwko temu, bo nie było niczego innego. Tabela poganiała tabele… do czasu.
Lepiej mieć wróbla w garści niż tabele na dachu.
Pojawił się on. Był przystojny, nienagannie ubrany, dobrze wychowany. CSS.
Mimo iż istniał od zarania dziejów internetowych (no dobra, od 96r) był przez długi okres czasu nielubiany. Sam pamiętam te czasy. (Wow, stary jestem ;p) Każdy wtedy myślał, że ten "kaskadowy coś tam coś tam" to jakiś straszny stwór, którego nie warto się uczyć, bo po co on, wszystko można uzyskać dzięki tabelom.
Przyszła jednak moda na to aby odsunąć - i słusznie - tabele od generowania wyglądu i użyć zaprojektowanego tylko po to języka. Nastała era divów, paragrafów, floatów i positionów absolutów. Teraz, jeśli tworzysz strony WWW w oparciu o tabele to albo przybyłeś wehikułem czasu z przeszłości, albo bierzesz nie te leki co trzeba. Nawet wszystkie książki Helionu promują ten styl, a są wydawane przecież z kilkuletnim opóźnieniem ;)
Divy są trendy… ale nie tylko. Strona oparta na divach, paragrafach, listach i stylach CSS jest nie tylko wgrywana szybciej (bo ma mniej kodu), ale tez renderowana szybciej przez przeglądarki. Jest to niezwykle istotne w aktualnych czasach. Dodatkowo tak stworzony layout dokumentu internetowego można bardzo szybko (podmieniając jeden plik) zmienić kompletnie nie do Warszawy… znaczy się, nie do poznania. Pomijam już całkowicie takie oczywistości jak lepsze wyniki w wyszukiwarkach, bo nie każdemu może na tym zależeć.
- Zimno mi. Tak zimno. Nie czuje «td»'ków. O mój Boże, nie czuje «td»'ków! Ja umrę, prawda? Spójrz mi prosto w oczy i powiedz, umrę, prawda?
Niestety tabelo. Umrzesz.
Z ludźmi jest czasem tak, że jak im dasz kamień do zabicia jelenia, oni zabiją swojego przyjaciela. Jak im dasz energie z atoma, to oni zbudują bombę. Podobnie jest aktualnie teraz z divami i CSSem. Doszliśmy bowiem do sytuacji w której, nikt o zdrowych zmysłach nie używa tabel do tworzenia schematu strony - ale ku memu zdziwieniu, jest to również sytuacja w której nikt już prawie nie używa tabel. Nawet do generowania na stronie tabel.
A owszem, w końcu dzięki kaskadowym arkuszom stylów możemy sprawić aby każdy paragraf był traktowany jako komórka tabeli, a div je otaczający jak samą tabelę. Co w gruncie rzeczy złe nie jest, bo z tekstowej reprezentacji możemy jedną podmianą pliku przejść na reprezentacje ułożoną w wygląd tabelaryczny. Ale na litość boską jak macie tabele z danymi to używajcie do tego «table» bo po to on służy.
No właśnie, na litość boską…
Używajcie tabel - zgodnie z ich przeznaczeniem. Bo tabela nie jest zła, ona miała tylko trudne dzieciństwo i tak naprawdę jest fajnym znacznikiem, który jeśli dobrze go poznacie, to nigdy was nie zdradzi i nie zawiedzie, bo co jak co, ale «table» każda przeglądarka renderuje dobrze.
No tak, tylko kiedy tak naprawdę użyć jej - TEJ tabeli? Przecież jest ona wielka, i tak trudno coś innego z nią zrobić niż tylko wypisać dane w tabelce.
Bingo!
Czasem bywa iż, potrzebujemy wypisać listę osób w formie tabelki z imionami, nazwiskami, emailami, numerami telefonów itp. Myślicie, że najlepszym wyjściem jest zagnieżdżanie divów, paragrafów i spanów, dawanie im id, klas oraz styli? Skądże - używając tabeli i prostych CSSów można stworzyć cudownie wyglądające zestawienia danych gdziekolwiek na stronie, bez konieczności zapamiętywania ajdików i zmyślnych nazw klas.
Podsumowanie.
Po co był ten przydługi wpis? Całość mogłem zawrzeć w dwóch zdaniach, ale nie miał bym wtedy możliwości przelania swoich frustracji odnośnie sposobu użycia divów do niecnych rzeczy, które tabela robi od ręki. A jeśli doczytałeś aż tutaj, to albo się nudziłeś, albo Ci się podobało… jak by nie było, zapraszam ponownie.
PS. Czemu nie mogę używać znaczników < i > na blagu? Rozumiem, że nie mogę htmlować, no ale bez przesady.