Semântica de tabelas

Por: Henrique C. Pereira

Publicado em Saturday 03 September 2005 às 16:55

Categoria: HTML/CSS/JScript

As tabelas foram e ainda são utilizadas para estruturar sites, obviamente de forma errada. Mas muitas pessoas pensam que desenvolver um site em webstandards significa nunca usar uma tabela no site. Isso não é verdade. Para estruturar um site, o correto é utilizar as tags corretamente respeitando o propósito pelo qual elas foram criadas, assim como a tag <table> que foi criada para exibir dados tabulares. Já me perguntaram o que são dados tabulares e minha resposta foi: "São dados em formato de tabela!". No propósito que estou discutindo aqui, são dados exibidos e organizados em linhas e colunas. Tudo que tem este formato é uma tabela.

A maioria das pessoas conhece o código de uma tabela em um documento XHTML da seguinte forma:


<table>
<tr>
         <td>texto aqui!</td>
         <td>texto aqui!</td>
         <td>texto aqui!</td>
         <td>texto aqui!</td>
</tr>
<tr>
         <td>texto aqui!</td>
         <td>texto aqui!</td>
         <td>texto aqui!</td>
         <td>texto aqui!</td>
</tr>
 
<tr>
         <td>texto aqui!</td>
         <td>texto aqui!</td>
         <td>texto aqui!</td>
         <td>texto aqui!</td>
</tr>
 
<tr>
         <td>texto aqui!</td>
         <td>texto aqui!</td>
         <td>texto aqui!</td>
         <td>texto aqui!</td>
</tr>
</table>

Existem outras tags que podem ampliar muito o potencial de se controlar os estilos de uma tabela. Fora as tags <table> <tr> e <td> conhecida de praticamente todos, ainda existem outras como as declaradas a seguir:

<caption> :
Caption em inglês é cabeçalho. Usando esta tag você insere um cabeçalho de título da tabela.
<th> :
TH é um acrônimo de Table Header ou cabeçalho de tabela. Pode ser usado em substituição da TD. A melhor aplicação desta tag é em títulos de linhas ou colunas como pode ser exemplificado em um exemplo mais abaixo.
<thead> <tbody> <tfoot> :
Estas tags são usadas para agrupar linhas de uma tabela e defini-las. Por exemplo, <thead> define a primeira linha da tabela e <tfoot> define a última linha, <tbody> é o corpo da tabela propriamente dito. Veja abaixo como seria o código fonte de uma tabela utilizando todas estas tags.


<table>
     <caption>texto</caption>
<thead>
    <tr>
         <th> texto </th>
         <th> texto </th>
         <th> texto </th>
         <th> texto </th>
    </tr>
</thead>
<tfoot>
    <tr>
         <th> texto </th>
         <th> texto </th>
         <th> texto </th>
         <th> texto </th>
    </tr>
</tfoot>
<tbody>
    <tr >
         <th> texto </th>
         <td> texto </td>
         <td> texto </td>
         <td> texto </td>
    </tr>
    <tr>
         <th> texto </th>
         <td> texto </td>
         <td> texto </td>
         <td> texto </td>
    </tr>
    <tr >
         <th> texto </th>
         <td> texto </td>
         <td> texto </td>
         <td> texto </td>
    </tr>
</tbody>
</table>

Observe que, mesmo que o <tfoot> esteja logo abaixo da tag <thead>, ela só é exibida abaixo do <tbody>. Veja abaixo a aparência dessa tabela:

<Caption>
<thead> <th><thead> <th><thead> <th><thead> <th>
<tfoot><th><tfoot><th><tfoot><th><tfoot><th>
<tbody><th><tbody><td><tbody><td><tbody><td>
<tbody><th><tbody><td><tbody><td><tbody><td>
<tbody><th><tbody><td><tbody><td><tbody><td>
<tbody><th><tbody><td><tbody><td><tbody><td>
<tbody><th><tbody><td><tbody><td><tbody><td>
<tbody><th><tbody><td><tbody><td><tbody><td>
<tbody><th><tbody><td><tbody><td><tbody><td>
<tbody><th><tbody><td><tbody><td><tbody><td>
<tbody><th><tbody><td><tbody><td><tbody><td>

Existe um site chamado CSS Table Gallery onde você pode exercer seus conhecimentos de CSS e colocar estilos em uma tabela. Eles publicaram minha versão e você pode conferir o CSS que eu usei aqui.

Comentários dos leitores

Este artigo possui 21 comentários

  1. Thiago Melo Monday 05 September 2005 às 08:18

  2. Fabio Ortolan #1° Monday 05 September 2005 às 11:13

    Sempre se esquecem da propriedade summary na tag table para a ascessibilidade…

  3. Anonymous #2° Monday 05 September 2005 às 12:16

    Gostei! Bem pensado. ^^

  4. Diogo Chaves #3° Monday 05 September 2005 às 18:35

  5. Carlos (Putcharles) #4° Tuesday 06 September 2005 às 08:45

    Muito bom!

    Também já conhecia e achei ótima a iniciativa!

  6. Flávio Theruo #5° Tuesday 06 September 2005 às 13:08

    Henrique, curti pra caramba estas explicações, apesar de não mexer muito no código html das páginas um dia pode me ser bastante útil.

    Parabéns. :-)

  7. Orestes #6° Tuesday 06 September 2005 às 18:44

    eu não conhecia esse código.

    Parabéns pelo site, muito legal isso

  8. Pingback: Semântica de Títulos » Revolução

  9. Wesley Menezes #7° Saturday 17 September 2005 às 19:59

    Muito interessante… eu sabia que existia essas tags, mas sempre pensei que fosse obrigatório o uso na ordem , e dps

  10. Ana Claudia Oliveira #8° Monday 19 September 2005 às 08:38

    Parabéns pelo seu blog. Muito bom.

    Sugiro q vc abra espaço para colaborações de artigos.

    []'s

  11. Luiz Júnior F #9° Tuesday 15 November 2005 às 02:17

    Putz, curti ao extremo este tópico, msm pq tem horas que nao temos como nos ver 100% livres das ; curti muito tb seu blog, tah de parabens truta ;)

  12. Leandro Vieira Pinho #10° Monday 05 December 2005 às 07:55

    Cara, bacana este artigo. Mas, acho que deveria apresentar os demais recursos para uma table. Como: summary; scope; header; dentre outros.

    Um abraço.

  13. Pingback: Microformats » Revolução

  14. Pingback: Tableless » Blog Archive » Uso correto das tabelas

  15. Pingback: Carlos Soler » Estilos para tabelas

  16. Pingback: O’Marin World » Blog Archive » Atlas o ajax do .Net

  17. Emerson #11° Thursday 11 January 2007 às 05:18

    Tirou minha duvida

    vlw

  18. William Lopes #12° Tuesday 11 September 2007 às 14:14

    Parabéns pelo artigo. Foi muito útil para mim que já estou caminhando para prestação de serviços totalmente acessíveis, mas ainda não havia tido oportunidade de estudar tabelas (somente a ausência delas ;D)

    Concordo com Leandro. Pena não ter tido também as tags: summary; scope; header; dentre outros.

  19. Noradar #13° Wednesday 28 May 2008 às 01:07

    Muito bom o artigo, me foi muito útil. Parabéns pelo trabalho!

  20. Almino Melo #14° Thursday 21 October 2010 às 06:39

    Qual a possibilidade de usar lista de definições e tabelas? O apelido e o nome de uma pessoa poderiam ser itens da lista de definição, mas estariam em uma tabela com a descrição de outros dados (RG, CPF, etc).

  21. Flávio Araújo #15° Monday 07 February 2011 às 19:08

    Henrique,

    O link para o seu css que foi aplicado a tabela de exemplo do post esta quebrado :(

    Excelente o post, sempre me recorro a ele ;)

Deixe seu comentário:

Observação: Todos os campos obrigatórios estão marcados com um asterisco (*).

  1. As seguintes tags podem ser inseridas nos comentários: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Sobre este blog

Meu nome é Henrique C. Pereira e o Revolução Etc é o meu blog pessoal. Eu trabalho com design de interfaces, dispositivos móveis, planejamento de soluções web, arquitetura da informação, programação de interfaces, acessibilidade, padrões web, e-commerce e outras coisas relacionadas.
Leia mais sobre o autor.