May312006
O vício dos divs
Para quem está iniciando no mundo do tableless, nada melhor do que pensar nos seus layouts completamente sem tabelas. Mas isso pode se tornar um vício, e um recurso que pode e deve ser utilizado em XHTML acaba entrando no esquecimento.
Pensando nisso, um dos meus últimos projetos foi efetuado completamente sem tabelas (até para textos tabulados). O resultado foi interessante, mas ainda assim não foi possível chegar à todos os recursos (como larguras flexíveis) que as tabelas proporcionam. Caso eu fosse tentar me aventurar nisso, com certeza perderia um pouco de tempo, em vão.
Darei um exemplo. Ele funciona bem no IE, Opera e Firefox (ou firer0x, apelido carinhoso).
O código
Definindo as colunas e células da nossa “tabela”.
Definindo o título:
<div class="row-order"><div class="col-title-1">Código</div><div class="col-title-2">Produto</div><div class="col-title-3">Quantidade</div></div>
Definindo o conteúdo:
<div class="row-order"><div class="col-1">102</div><div class="col-2">Arroz</div><div class="col-3">1kg</div></div>
Definindo o CSS:
#content .row-order {width: 500px;background: #fff;margin: 0;border-bottom: 1px dotted #c7c7c7;}/**/#content .row-order .col-title-1 { /* Título tabela - primeira coluna */display: table-cell;margin: 0;padding: 10px;width: 60px;background: #f1f1f1;font-weight: bold;color: #0678b3;border-left: 1px solid #fff;}/**/* html #content .row-order .col-title-1 { /* Título tabela - primeira coluna (hack IE) */display: list-item;float: left;}/**/#content .row-order .col-1 { /* Conteúdo tabela - primeira coluna */display: table-cell;margin: 0;padding: 10px;width: 60px;border-left: 1px solid #fff;}/**/* html #content .row-order .col-1 { /* Conteúdo tabela - primeira coluna (hack IE) */display: list-item;float: left;}/**//* E assim sucessivamente até chegar até a terceira coluna respeitando o tamanho total de 500px para cada célula da tabela. Ou seja: com três colunas, divida os 500px em três como desejar.*/
Esta técnica dá certo, porém vejam o trabalho para a construção de toda a marcação, além do inconveniente do uso dos hacks para IE. Todas as colunas posteriores à primeira precisarão de ajustes via hack para ficarem com seu tamanho similar ao apresentado em outros browsers.
A solução
Na realidade não é bem uma solução, já que, ao meu ver, deve ser a forma correta de marcação. Fica como uma conscientização, então. Lá vai:
<table><caption>Minha tabela de produtos</caption><thead><tr><th>Código</th><th>Produto</th><th>Quantidade</th></tr></thead><tbody><tr><td>102</td><td>Arroz</td><td>1kg</td></tr></tbody></table>
Para este trabalho, uma simples tabela de três colunas resolveria o problema. E melhor: sem grandes truques de CSS. Tabelas servem para isso! Use-as para isso!

Yogourt - 1/06/06 às 9:40 am
A mistura dos dois estilos de construção, com e sem tabelas, seria a solução? Já construi sítios totalmente em tableless e realmente o códifo CSS é chatinho. Porém o HTML fica maravilhosamente simples! E acho que usei larguras e alturas variáveis sem tabela…
ramonpage - 1/06/06 às 10:04 am
Sim! Mesmo reduzindo a utilização das tabelas, elas não devem morrer. Perceba que neste tópico aponto para a solução na criação de dados tabulares.
Qual a razão de quebrar a cabeça na criação de pseudo-tabelas, usando apenas
divse CSS, para inserir uma lista de produtos por exemplo, sendo que as tabelas existem para isso?É neste ponto que o uso dos
divspode ser vicioso. Dados tabulares podem e devem ser inseridos em tabelas!Não há dúvidas que para uma melhor marcação XHTML não se deve usar tabelas, mas não é por esse motivo que elas nunca devem ser usadas.
warez-vip - 21/06/06 às 1:22 pm
He sits at his chair, one of those faggy ball chairs, crosses his legs and turns toward his Macintosh. “Come, lovely. Let me show you how to open an email.”
ramonpage - 21/06/06 às 2:29 pm
@Warrez-vip: I’m sorry, but i don’t understand your intentions.
Any comment that does not reffer with the article can be considered spam and consequently deleted.