Tableless - Desenvolvimento inteligente com Padrões Web

16/07/2009
CSS

Propriedade do CSS: nth-child

A pseudo-classe nth-child seleciona elementos dentre uma árvore de elementos se referindo a posição específica de cada um. Você pode por exemplo selecionar os elementos ímpares ou pares.

Por


Se você é um cara muito técnico, que adora matemática e números, prefiro que você leia a documentação do W3C sobre

1
nth-child

. Ela é mais rica em detalhes sobre o cálculo que essa pseudo-classe faz. Este artigo é para os pobres mortais.

Você já precisou de criar uma tabela zebrada? Eu já, muitas vezes. Provavelmente se você não sabe programar, você precisa chamar um programador para escrever duas ou três linhas de código Javascript ou até mesmo usando JQuery, para fazer a mágica para você. A idéia do CSS, é que nós, designers, possamos controlar a aparência dos elementos HTML. Isso inclui conseguirmos fazer uma maldita tabela zebrada também. Para isso e para outros problemas parecidos, podemos utilizar a pseudo-classe

1
nth-child

. Com esta pseudo-classe é possível selecionar um determinado elemento dentro de uma árvore de elementos. Por exemplo, podemos selecionar todas as linhas ímpares das tabela. Legal, hein?

Cálculo básico

O cálculo utilizado pelo

1
nth-child

é bastante simples. Você vai usar na maioria das vezes soma. Lembra? A fómula será a seguinte: an+b.

table tbody tr:nth-child(2n+1) {
  background:lightgray;
}

O funcionamento é o seguinte: o browser aplica o estilo a cada 2

1
tr

.
O código abaixo, aplica o estilo a cada 3

1
tr

. E assim por diante.

table tbody tr:nth-child(3n+1) {
  background:lightgray;
}

Você pode facilitar, utilizando as palavras odd ou even, para selecionar os elementos ímpares ou pares da árvore.

table tbody tr:nth-child(odd) {
  background:lightgray;
}

Caso você queira pegar 9º, 19º, 29º e assim por diante:

table tbody tr:nth-child(10n-1) {
  background:lightgray;
}

Se o valor de a (an+b) é igual 0, você não precisa colocar a fórmula, apenas o número referente a ordem do elemento. Exemplo:

table tbody tr:nth-child(1) {
  background:lightgray;
}

Neste código, o browser iá colorir o background apenas do primeiro

1
tr

.

Veja o exemplo.

A propriedade

1
nth-child

faz parte dos seletores do CSS 3 e já pode ser utilizado em browsers atuais.

Se você ainda não leu sobre seletores do CSS, leia estes artigos abaixo:

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

  • Miguel Trindade Jr

    Mais um ótimo recurso do CSS 3.
    Tremenda facilidade para alternar entre os elementos sem nenhuma linha de programação.

  • http://nandodutra.com Fernando Dutra

    Muito util essa pseudo-classe, sou programador PHP e Javascript, faço o efeito zebra em tabelas com muita frequencia, uso PHP para atribuir uma classe para todas a linhas impares. com a “nth-child” fica tudo mais fácil, pena que testei no Ieca 7 e não funcionou.

  • http://battisti.etc.br battisti

    Poxa muito legal esta função, não vejo a hora de poder usar este tipo de coisa sem me preocupar com navegadores antigos!

  • http://www.blackouts.com.br Luiz Gustavo Assuena

    mais um belo motivo para a morte do IE6, aquele maldito zumbi hi-tech…

  • Mauro George

    Muito bom as css 3 só tem a ajudar no desenvolvimento.

    Porém sem termos total suporte, o que é bem triste,acabamos utilizamos tais efeito apenas para teste e experiências.

  • Gabriel Rissoni

    Muito bom isso… vai facilita demais a vida…hehehe

  • http://2009.comdigital.info/bruno Bruno Henrique Stein

    Muito bom o recurso.
    É só uma pincelada do que está por vir com o CSS3.

  • Pingback: nth-child | Boas práticas de Desenvolvimento com Padrões Web « Franksousa's Blog

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

    Chrome 2.0 ok
    Safari 4.0 ok
    Firefox 3.0.11 fail
    Internet Explorer 8 fail

  • Gabriel

    Firefox 3.5.1 ok

  • Saulo B

    Ler a tableless provoca depressão, é tudo tão perto mas tão distante….

  • http://techzine.com.br Rael B. Riolino

    Enquanto o CSS3 não é compatível na maioria dos browsers, continuo colocando um class=”alt” a cada tr impar da tabela mesmo, na mão…

    Fazer o que né?

  • Pingback: 1a. Conferência Web W3C Brasil « Blog da Tay

  • Pingback: Clica Aqui » CSS 3 Columns

  • Pingback: Clica Aqui » Efeito cascata, herança e especificidade do CSS

  • http://pcr15.com Lucas Taylor

    Muito bom mesmo o tutorial, eu realmente procurei muito a respeito deste efeito, muito obrigado. Parabens para vocês.

  • http://www.angelorubin.com.br angelo rogeriorubin

    Muito boa a explanação.
    É uma pena que essa pseudo classe não funciona em nenhuma versão do Internet Explorer.

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

    Ótimo Artigo! Propriedade fantástica eu não conhecia, e com os exemplos além de aprender posso concluir que o CSS3 vem para ficar e revolucionar o Desenvolvimento frontEnd. Obrigado!

  • Bruno

    Agora sim a coisa ta melhorando hein?! :)

  • Pingback: Tropeçando 7 | Rafael Bernard Araujo