Exista unele situatii cand ai nevoie de o structura tabelara, dar esti obligat s-o faci din DIV-uri (a lucra pentru un tip ca mine poate impune uneori si situatii de-astea aparent absurde 😀 ). Ce faci atunci?
Poi… DACA FOLOSESTI FF, atunci poti sa reproduci structura tabelului, doar ca in loc de
< table >
< tr >
< td >
< / td >
< td >
< / td >
< / tr>
< tr>
< td >
< / td >
< td >
< / td >
< / tr>
< table >
o sa scrii ceva de genul
< div class = " table " >
< div class = " tr " >
< div class = " td " > < / div >
< div class = " td " > < / div >
< / div >
< div class = " tr " >
< div class = " td " > < / div >
< div class = " td " > < / div >
< / div >
< / div >
…iar mai departe o sa te asiguri ca definitiile celor trei noi clase vor contine urmatoarele proprietati:
.table { display: table; }
.tr { display: table-row; }
.td { display: table-cell; }
De ce? Pentru ca, setand proprietatile astea, latimile coloanelor se vor transmite in sus/jos exact ca intr-un tabel normal.
Dezavantaje:
1. treaba asta nu permite merging-ul (lipirea) de celule… cu alte cuvinte, colspan si rowspan ies din joc la abordarea asta.
2. codul html in mod cert rezulta mai lung
3. alinierea pe verticala este specifica doar celulelor de tabel real, cu abordarea asta deci o sa ai ca default numai valign=top;
4. proprietatile CSS din exemplul asta NU sunt suportate de IEx… nici nu stiu daca asta e un dezavantaj sau un avantaj 😀
Avantaje:
1. un mai bun control asupra celorlalte aspecte de design, prin CSS (nu mai e nevoie sa setezi float-left-uri ca la balamuc pentru div-urile astea, si nu-ti vor mai “sari” din rand din cauza continutului)
2. folosind abordarea cu DIV-uri poti implementa apoi lejer tot felul de minunatii drag&drop din familia AJAX.
O lista completa a proprietatilor CSS din familia TABLE-lor gasesti aici:
TABLE { display: table }
TR { display: table-row }
THEAD { display: table-header-group }
TBODY { display: table-row-group }
TFOOT { display: table-footer-group }
COL { display: table-column }
COLGROUP { display: table-column-group }
TD, TH { display: table-cell }
CAPTION { display: table-caption }
Pentru o documentare completa, mergi aici.
Nu mai usor ar fi sa folosesti liste neordonate? Iar elementele sa aiba display: inline? 😛
Din pacate solutia ta nu are practic niciun avantaj! Si in plus zici ca ignori utilizatorii IE! Ce s-ar fi intamplat daca amazon.com ar fi fost testat doar pe Konqueror?
Un avantaj nu este controlul din css! Pentru ca si tabelele, randurile si celulele se pot controla, scriind chiar mai putin cod!
Semantic ai o problema grava: intr-un document ai putea avea 3000 de sectiuni(division)…cred ca sunt cam multe! 😛
Exemplu: Luam afisarea unei “liste” sau “tabel” (observati ca html-ul are taguri cu nume asemanatoare :P) cu toti locatarii unei scari!
In cazul tau fiecare camp nume din “tabelul tau klingonian” ar fi luat ca o sectiune independenta care nu are nici o legatura cu campul prenume( sau etaj, apartament, etc)
Tabelele nu trebuie inlocuite doar pentru a fi mai smecher, ci trebuie folosite cu cap!
Sper ca nu am suparat cu nimic! 😀
Hehe nu ai suparat cu nimic, FLux!
Nici eu nu-s “anti-tabele” decat in materie de layout. Stiu din experienta ca, daca vrei sa afisezi informatie tabelara, cel mai bine o faci cu un tabel.
Stii care e faza cu tabelele din div-uri? E mai mult un exercitiu de ambitie si de css, decat unul de functionalitate 🙂
Abordarea TABLE din DIV CSS are, in opinia mea, un singur avantaj major: posibilitatea de a “jongla” cu AJAX; si unul minor – viteza mai mare de afisare (ne-depinzand de incarcarea restului tabelului). In rest, numai bube rele…