Busca

Boas práticas de Desenvolvimento com Padrões Web


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.

16/07/2009 por Diego Eis
18 Comentários

Se você é um cara muito técnico, que adora matemática e números, prefiro que você leia a documentação do W3C sobre 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 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 nth-child é bastante simples. Você vai usar na maioria das vezes soma. Lembra? A fómula será a seguinte: an+b.

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

O funcionamento é o seguinte: o browser aplica o estilo a cada 2 tr.
O código abaixo, aplica o estilo a cada 3 tr. E assim por diante.

1
2
3
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.

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

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

1
2
3
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:

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

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

Veja o exemplo.

A propriedade 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:

18 Comentários

Sua opinião:

Vamos elevar o nível de discussão. Exponha sua opinião, sua crítica.



RSS dos comentários deste post
URL para Trackback

18 Comentários

Miguel Trindade Jr 16/07/2009 às 14:27

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

Fernando Dutra 16/07/2009 às 15:19

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.

battisti 16/07/2009 às 15:35

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

Luiz Gustavo Assuena 16/07/2009 às 16:20

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

Mauro George 17/07/2009 às 10:33

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 17/07/2009 às 13:21

Muito bom isso… vai facilita demais a vida…hehehe

Bruno Henrique Stein 18/07/2009 às 17:30

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

nth-child | Boas práticas de Desenvolvimento com Padrões Web « Franksousa's Blog 18/07/2009 às 21:42

[...] Julho 19, 2009 at 12:41 am (Desenvolvimento Web) (CSS 3, Tableless) nth-child | Boas práticas de Desenvolvimento com Padrões Web. [...]

Gabriel 20/07/2009 às 23:56

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

Gabriel 22/07/2009 às 10:29

Firefox 3.5.1 ok

Saulo B 28/07/2009 às 21:54

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

Rael B. Riolino 30/07/2009 às 08:49

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é?

Lucas Taylor 21/05/2010 às 15:29

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

angelo rogeriorubin 17/07/2010 às 10:16

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