Tabelas com linhas em cores alternadas
Publicado em: 02/03/2005Atualizado em: 12/03/2011
Introdução
Tabelas em projetos CSS?
Sim! O uso de tabelas em projetos CSS é perfeitamente válido desde que observadas algumas recomendações de uso e construção, preconizadas pelas Recomendações do W3C para a linguagem HTML, que resumidamente aconselham o seguinte.
- usar tabelas unicamente para apresentação de dados tabulares;
- contruí-las acessíveis aos leitores de tela e demais agentes de usuário em geral;
Links relacionados:
Recomendações do W3C para Construção de tabelas (em inglês).
Recomendaçãos do W3C para Técnicas para acessibilidade em tabelas (em inglês).
Recomendações do W3C para Acessibilidade à conteúdos de tabelas (em português).
Objetivo e escopo deste tutorial
Neste tutorial mostrarei como estilizar uma tabela de modo a aplicar-lhe um visual do tipo linhas em cores alternadas, também conhecido como "efeito zebra", tão comum em tabelas de apresentação de dados.
Usei na codificação da tabela que serviu de exemplo para esse tutorial apenas os elementos HTML
table
, tr
e td
mas ressalvo que a não utilização dos demais elementos de construção de tabelas conforme as Recomendações do W3C conforme links citados no item anterior visam a simplificar o código já que nosso objetivo é mostrar como estilizar linhas de tabelas em cores alternadas.
Ao construir suas tabelas não se limite aos três elementos citados.
Siga as recomendações do W3C! :-)
O código da tabela
Abaixo o código da tabela que usaremos neste tutorial.
<table border="1px" cellpadding="5px" cellspacing="0">
<tr>
<td>Célula 1-1 </td>
<td>Célula 1-2</td>
<td>Célula 1-3</td>
</tr>
<tr>
<td>Célula 2-1 </td>
<td>Célula 2-2</td>
<td>Célula 2-3</td>
</tr>
<tr>
<td>Célula 3-1 </td>
<td>Célula 3-2</td>
<td>Célula 3-3</td>
</tr>
<tr>
<td>Célula 4-1 </td>
<td>Célula 4-2</td>
<td>Célula 4-3</td>
</tr>
<tr>
<td>Célula 5-1 </td>
<td>Célula 5-2</td>
<td>Célula 5-3</td>
</tr>
</table>
Defini borda, cellpadding e cellspacing no elemento table
para simplificar. Use CSS para estas definições.
A técnica adotada
Conforme visto no link acima, nosso objetivo é o de alternar a cor das linhas da tabela em cinza claro #eee e creme #ffc.
Vamos fazer assim:
- estabelecer uma regra CSS para atribuir uma das cores para fundo de toda a tabela;
- estabelecer outra regra CSS para sobrescrever com a outra cor as linhas, alternadamente.
Definindo ID e classes
Para que as regras CSS sejam válidas somente para uma tabela na página vamos criar um ID para a tabela.
Chamaremos este ID de alter.
Nota: Se você pretende estilizar todas as tabelas do seu site de maneira idêntica não é necessário esta ID, aplique as regras CSS direto no elemento table
;
Se você pretende estilizar algumas tabelas do seu site de maneira idêntica, crie uma classe e não ID, pois como você já deve saber, ID deve ser única no documento e classe pode ser repetida no mesmo documento.
Para estilizar linhas alternadas diferentemente, vamos criar uma classe para aplicar nos elementos tr
alternados.
Chamemos esta classe de dif.
Os seletores para aplicar estilos
Para aplicar a cor em toda a tabela usaremos o seletor contextual:
table#alter tr td
que determina a aplicação da regra CSS nas td's dentro das tr's que estão dentro de table com ID=alter (leia o seletor da esquerda para a direita)
Para sobrescrever a cor em linha alternadas atribuimos a classe dif para as linhas tr
alternadas e usaremos o seletor contextual
table#alter tr.dif td
(leia o seletor conforme mostrado acima)
A segunda regra CSS sobrescreve (tem prioridade) sobre a primeira por ser mais específica. Ver tutorial sobre especificidade da regra CSS.
Aplicando o ID e a classe no código
<table border="1px" cellpadding="5px" cellspacing="0" ID="alter">
<tr>
<td>Célula 1-1 </td>
<td>Célula 1-2</td>
<td>Célula 1-3</td>
</tr>
<tr class="dif">
<td>Célula 2-1 </td>
<td>Célula 2-2</td>
<td>Célula 2-3</td>
</tr>
<tr>
<td>Célula 3-1 </td>
<td>Célula 3-2</td>
<td>Célula 3-3</td>
</tr>
<tr class="dif">
<td>Célula 4-1 </td>
<td>Célula 4-2</td>
<td>Célula 4-3</td>
</tr>
<tr>
<td>Célula 5-1 </td>
<td>Célula 5-2</td>
<td>Célula 5-3</td>
</tr>
</table>
As regras de estilo
Agora podemos definir as regras de estilo para alternar cores de linhas na tabela.
São elas:
table#alter tr td { /* Toda a tabela com fundo creme */
background: #ffc;
}
table#alter tr.dif td {
background: #eee; /* Linhas com fundo cinza */
}
O código completo
Para ver o código completo XHTML + CSS da tabela estilizada veja o código fonte desta página
Conheça os livros do Maujor®
Ir para a página de entrada nos sites dos livros.