Tableless - Desenvolvimento inteligente com Padrões Web

27/10/2008
Artigos

Tabelas semânticas

Você já deve saber que o desenvolvimento utilizando Padrões Web preza pela Semântica no código. Todo código que você escrever deve dar algum significado ao conteúdo. E toda tag sem sua função específica e te ajuda a formar um código …

Por


Você já deve saber que o desenvolvimento utilizando Padrões Web preza pela Semântica no código. Todo código que você escrever deve dar algum significado ao conteúdo. E toda tag sem sua função específica e te ajuda a formar um código mais esperto e legível.
Alguns elementos por dependerem de várias tags para ter um funcionamento pleno, acabam sofrendo com o desinteresse dos desenvolvedores em entender melhor os diversos objetos que compoem um determinado elemento. Um caso bastante comum, além dos Formulários, é a formação das TABLES.
Normalmente, escrevemos uma tabela mais ou menos assim:

Produto Descrição Valor
Tênis Tênis com amortecedor, tecido vermelho com cadarço preto. R$350,00
Camiseta Tamanho GG, cor preta e uma estampa nas costas. R$55,00
Calça Tecido Jeans, azul claro, com botão duplo. R$105,00

Para nós que enxergamos bem e conseguimos fazer uma breve interpretação de texto, conseguimos entender na maioria das vezes qual o assunto das tabelas na página.

Mas e o Google? E o leitor de tela do cego?

Por isso, a tabela tem algumas tags que ajudam o desenvolvedor a dar mais informação sobre o conteúdo daquela tabela.

Há algumas tags que iremos acrescentar em nossa tabela para dar essa informação extra ao visitante, seja ele ser humano ou robô.

SUMMARY – Dizendo do que se trata a tabela

O atributo summary é colocado na tag TABLE. Ela serve para indicar do que se trata aquela tabela, dizendo sua utilidade e que tipo de informação está descrevendo.

TH – Table Header

Considerando o código que colocamos mais acima, há os títulos de células PRODUTO, DESCRIÇÃO e VALOR. Esses títulos, devem ser destacados como título, não apenas modificando seu visual pelo CSS, mas também destacando-os pelo código. Para fazermos isso, iremos utizar a tag TH.

Essa tag irá indicar que tais células são títulos. O nosso código ficará assim:

Produto Descrição Valor
Tênis Tênis com amortecedor, tecido vermelho com cadarço preto. R$350,00
Camiseta Tamanho GG, cor preta e uma estampa nas costas. R$55,00
Calça Tecido Jeans, azul claro, com botão duplo. R$105,00

THEAD – Cabeçalho da Tabela

Normalmente as tabelas tem sempre uma linha de títulos, como a nossa tabela acima. Precisamos informar então, que essa linha é um cabeçalho, que contém os títilos das colunas ou linhas. Para isso, envolveremos a TR que contém as THs com a tag THEAD. Nosso código ficará dessa forma:

Produto Descrição Valor
Tênis Tênis com amortecedor, tecido vermelho com cadarço preto. R$350,00
Camiseta Tamanho GG, cor preta e uma estampa nas costas. R$55,00
Calça Tecido Jeans, azul claro, com botão duplo. R$105,00

TFOOT – Indicando o rodapé da tabela

Logo após o THEAD, iremos indicar quais informações irão no rodapé do documento, utilizando a tag TFOOT. Aqui, iremos colocar as mesmas informações do THEAD, supondo que a tabela é muito grande e queremos que o usuário, ao chegar no rodape, não se perca com a identificação das colunas. Nosso código fica assim:

Produto Descrição Valor
Produto Descrição Valor
Tênis Tênis com amortecedor, tecido vermelho com cadarço preto. R$350,00
Camiseta Tamanho GG, cor preta e uma estampa nas costas. R$55,00
Calça Tecido Jeans, azul claro, com botão duplo. R$105,00

TBODY – Indicando o corpo da tabela

Se há um cabeçalho e um rodapé na tabela, é mais do que normal haver um BODY, apresentando as informações que de fato interessam ao usuário.
O TBODY deve ir logo após a tag TFOOT. Sinceramente, não sei porque a tag TFOOT não vem após a TBODY, já que é o código de Rodapé. Se você souber, por favor, me diga!

Nosso código fica dessa forma:

Produto Descrição Valor
Produto Descrição Valor
Tênis Tênis com amortecedor, tecido vermelho com cadarço preto. R$350,00
Camiseta Tamanho GG, cor preta e uma estampa nas costas. R$55,00
Calça Tecido Jeans, azul claro, com botão duplo. R$105,00

CAPTION – Título do Cabeçalho

A tag CAPTION define um título para o cabeçalho da tabela. Esse título vai apresentar a tabela para o usuário. Ele deve ser colocado logo antes da tag THEAD e logo após tag TABLE.

Produtos em Promoção
Produto Descrição Valor
Produto Descrição Valor
Tênis Tênis com amortecedor, tecido vermelho com cadarço preto. R$350,00
Camiseta Tamanho GG, cor preta e uma estampa nas costas. R$55,00
Calça Tecido Jeans, azul claro, com botão duplo. R$105,00

Já com essas tags diferenciadas, o trabalho que teríamos para formatar o cabeçalho, título e conteúdo da tabela ficou mais leve. Em vez de colocar class em tudo quanto é TR para diferenciar as partes da tabela, conseguimos formatar cada um desses grupos sem encostar no código HTML. Claro, que se você quiser fazer algo mais rebuscado, a modificação do código HTML será inevitável. Mas, com esse pouco código que escrevemos, já procrastinamos essa necessidade.

Por Diego Eis

Diego Eis criou o Tableless para disseminar os padrões web no Brasil. Como consultor já treinou equipes de empresas como Nokia, Globo.com, Yahoo! e iG. É palestrante e empreendedor.

http://twitter.com/diegoeis/

Veja os outros posts de

  • http://designlivre.net Marcus VBP

    Salve Diego!

    O TFOOT vem logo depois do THEAD e antes do TBODY, para o caso da tabela ser muito longa. Por exemplo, uma tabela com centenas de linhas. Com o TFOOT carregado logo depois do THEAD, garantiria que o usuário teria acesso ao resultado dos dados (que é o que normalmente se espera no rodapé de uma tabela) estaria visível mesmo que a tabela fosse exibida de forma incompleta, ou antes mesmo da tabela inteira ser exibida.

  • http://lucasmezencio.com Lucas Mezêncio

    Olá! Muito interessante o post. Eu já uso um pouco de semântica nos meus códigos há um tempo, porém não tanto.
    Achei interessante a idéia da semântica em tabelas.
    Mas não entendi, no quesito que se trata a ordem da escrita do código. Se for pararmos pra pensar, como semântica é para melhor entendimento e discernimento do código, porque esceveremos o TFOOT antes do TBODY sendo que TBODY vem primeiro?
    Paira então minha dúvida.
    Espero respostas!

    Muito bom o post! Abraços a todos!

  • http://www.camodong.com.br Neto

    Excelente post, em relação a tables tirou todas minhas dúvidas, valeu!!!

  • http://twitter.com/adan_nada Ubiratan de Carvalho

    Salve, costumo fazer as tabelas assim também. E também tinha dúvida sobre o motivo de TFOOT aparecer antes do TBODY. Bom, tem uma explicação razoável no W3C dizendo: TFOOT must appear before TBODY within a TABLE definition so that user agents can render the foot before receiving all of the (potentially numerous) rows of data.

    Grande abraço a todos.

  • Julio Cesar Bitencour Silva

    Excelente post. Uma vez lí (não lembro onde) que o TFOOT vem antes de TBODY para que, em casos de tabelas com muito conteúdo, as informações sobre a tabela (diga-se THEAD e TFOOT) sejam renderizadas antes do conteúdo todo.

    Não sei até onde isso é verdade. Acho que vale a pena uma pesquisa!

  • Alexandre Romero

    Parabéns pela matéria, muito boa mesmo. Falando em tabelas, sugiro algumas informações sobre a tag , que ajuda um bocado na hora de formatar colunas sem ter que distribuir class pra todo lado!

    Abraço!

  • Willie Oliveira

    Estes atributos e tags de tabelas realmente são bem definidos, no entanto gostaria que alguém me falasse sobre alinhamento e largura de colunas através das tags COLGROUP e COL.

    Já tentei seguir o W3C, só que ou eu não tenho conseguido aplicar de forma correta ou simplesmente não funciona. Alguém pode construir um exemplo e testar em FF e IE?

    Já consegui aplicar background seguindo alguns workarounds que o próprio W3C recomenda, mas largura e alinhamento não obtive os resultados esperados!

  • http://www.chrisb.com.br Chris Benseler

    Só o que eu não conhecia era o th. Achava que o thead bastava nesse caso.
    Mas, muito bom :)

  • http://melancianacabeca.com Elia

    Achei muito bom o post! Pior que existem xiitas que não usam tabela nem para dados tabulares! rsrs

    Só fiquei com uma dúvida: qual a diferença entre o summary e o caption?

  • José

    Muito bacana, a tempo procuro um site que demonstre exemplos claros, práticos e que realmente tenham utilidade.

  • http://izaccavalheiro.com Izac Cavalheiro

    Muito bom. Já usava semântica em tabelas, porém, não usava o tfoot antes do tbody, justamente, porque pela lógica ele deveria vir depois :) mas agora entendi o motivo.

    Quanto a tag summary ela funciona como uma descrição da tabela e não um título como no caso do caption.

  • http://fabio.freesandbox.net Fabio

    Parabéns. Desmitifica o tableless, onde muitos acham que isso é não usar tabelas. Tableless é a arte de usar a tag certa pra coisa certa. Table é pra tabela, como pra título se usa H’s, e não DIVs.

    Abraços.

  • http://floripasom.com Acelio Filho

    Bom lembrar que na hora de usar tabelas também tem-se que ser semântico.
    Muito bom este post.

  • Pingback: rascunho » Blog Archive » links for 2008-10-28

  • http://wwwcombr.wordpress.com Acesse

    Ótimo, já irei testar estas novas semânticas em meu site. Grande abraço”

  • Alexandre Romero

    Ops, faltou parte do texto, a tag que me referia era COLGROUP =)

  • Daniel Jesus

    Post, bacana sobre acessibilidade, porém tenho um comentário a fazer, ao invés de usar a expressão “CEGO” por favor Diego use deficiente visual, tenho certeza que muitos deficientes visuais e portadores de outras dificiências acessam o tableless pelo seu excelente conteúdo e provavelmente podem ter se sentido ofendidos com esta denominação.

    No mais muito bom este post

  • http://tableless.com.br/ Diego Eis

    Daniel, tudo bem?
    Uma vez perguntei para um grupo de deficientes visuais sobre exatamente esse termo. Eles disseram que prefeririam que o chamassem de cegos.
    Eu acho que também preferiria. Melhor do que ser chamado de Deficiente.
    Mas acho que vai de cada pessoa, não é?

  • http://www.solhys.com.br Daniel

    Tudo bem Diego, realizei uma pesquisa para minha faculdade onde mais de 80% dos entrevistados disseram ser sentir ofendidos, claro que vai de cada pessoa mas é melhor prevenir do que remediar

    Mas entendo seu ponto de vista.

    Sei que é muito ocupado e agradeço por ter respondido meu humilde comentário.

    Obrigado!!

  • Erick

    Bom dia, tenho um dúvida que está um pouco além do mencionado na matéria…

    Bom, exite também alguma maneira de zerar pelo css a tabela? Como por exemplo o cellpadding=”0″ cellspacing=”0″?

    Parabéns pelo seu trabalho, aprende e muito com seu material.

    Abraços.
    Erick

  • http://www.hildersantos.com Hilder Santos

    Opa, meu velho!

    Excelente post, cara, principalmente para mim, que não costumo utilizar o Dreamweaver para desenvolver (hehehe… Não é frescura não, é Dreamweaver dando erro mesmo na minha máquina! hauhaua).

    Na próxima vez que precisar desenvolver tabelas, certamente vou utilizar estas tags. ;)

    Valeu, camarada.

    Abraço!

  • http://www.hotmastersound.com.br Durval

    Legal estas informações sobre semântica. Quando se esta disputando mercado com seus concorrentes diretos nos sites de busca, todas as dicas são válidas.
    Durval – http://www.hotmastersound.com.br

  • http://thifacco.blogspot.com Tiago Luis Facco

    Olá Diego, essas informações sobre tabelas semânticas me foram muito úteis. Já estava cansado de escrever tanto css inútil pra elas… rs. Um abraço!

  • Leo Cabral

    É muito bom encontrar essas informações traduzidas. Evita equívocos. Nem preciso dizer que quanto mais elementos para trabalhar CSS dentro de uma tabela melhor para todos nós. Evita o excesso de classes e id desnecessárias. Abraço.

  • http://www.klebersonleite.com Kleberson Leite

    Salve Salve Galera do Tableless.com.br, com muito prazer que venho parabenizar os grandes artigos desenvolvidos pelos colunistas deste site.
    É muito legal saber que pessoas como vocês se interessam bastante com a semantica e o desenvolvimento “correto” dos websites.

    Abraços.. e Parabéns!!

  • Pingback: Tabelas semânticas « Vinicius Balduino Garcia

  • Pingback: Asp.net e Web Standards » Blog Archive » Asp:Repeater e Web Standards

  • http://twitter.com/jardel_xavier Jardel Xavier

    Acompanhando o Tableless todos os dias é um aprendizado. Obrigado!

  • http://tutsmais.com.br/blog/ Ofelquis

    Okay mas qual o doctype correto para se usar isso ?