Seletor CSS nth-child: odd, even e fórmulas com exemplos

Hoje voltamos às bases do CSS. Costumo usar os seletores CSS nth-child nos meus artigos, e isso fez-me perceber que nunca tinha revisto mesmo as bases. nth-child é uma pseudo-classe CSS que permite selecionar elementos, e hoje vamos explorar tudo o que este poderoso seletor sabe fazer.

Seletor CSS nth-child: odd, even e fórmulas com exemplos

Hoje voltamos às bases do CSS. Costumo usar os seletores CSS nth-child nos meus artigos.

E isso fez-me perceber que nunca tinha revisto mesmo as bases dos seletores css nth-child. nth-child é uma pseudo-classe CSS que permite selecionar elementos.

Hoje vamos explorar as possibilidades deste poderoso seletor CSS com alguns exemplos.

Comecemos por alguns seletores css nth-child básicos:

Podemos indicar o número do elemento que queremos selecionar. Digamos que queremos o terceiro elemento da lista.

css
.article-list li:nth-child(3) {
    	color: green;
}
html
<ul class="article-list">
	<li>Item 1</li>
	<li>Item 2</li>
	<li>Item 3</li>
	<li>Item 4</li>
	<li>Item 5</li>
</ul>

O resultado é que só o terceiro elemento fica verde

  • Item 1
  • Item 2
  • Item 3
  • Item 4
  • Item 5

O seletor odd/even

Podemos selecionar todos os elementos de posição par ou ímpar com odd e even.

css
.article-list-odd li:nth-child(odd) {
    	color: green;
}
html
<ul class="article-list-odd">
	<li>Item 1</li>
	<li>Item 2</li>
	<li>Item 3</li>
	<li>Item 4</li>
	<li>Item 5</li>
</ul>

O resultado é que só os elementos ímpares ficam selecionados:

  • Item 1
  • Item 2
  • Item 3
  • Item 4
  • Item 5

e nth-child(even) para os resultados pares:

css
.article-list-even li:nth-child(even) {
    	color: red;
}
  • Item 1
  • Item 2
  • Item 3
  • Item 4
  • Item 5

Todos os X elementos

Outra coisa que dá para fazer com o seletor nth-child, é selecionar de x em x elementos. Digamos, por exemplo, que queremos selecionar um elemento em cada quatro:

css
... li:nth-child(4n) {
	color: red;
}

Agora fica selecionado cada 4.º elemento filho:

  • Item 1
  • Item 2
  • Item 3
  • Item 4
  • Item 5
  • Item 6
  • Item 7
  • Item 8
  • Item 9
css
... li:nth-child(4n+1) {
	color: red;
}

E se quisermos incluir o primeiro elemento:

  • Item 1
  • Item 2
  • Item 3
  • Item 4
  • Item 5
  • Item 6
  • Item 7
  • Item 8
  • Item 9

Ou o segundo elemento:

css
... li:nth-child(4n+2) {
	color: red;
}
  • Item 1
  • Item 2
  • Item 3
  • Item 4
  • Item 5
  • Item 6
  • Item 7
  • Item 8
  • Item 9
  • Item 10

Selecionar os x primeiros elementos

Podemos até usar um seletor que apanha todas as tags menos os três primeiros elementos.

css
... li:nth-child(n+4) {
	color: red;
}
  • Item 1
  • Item 2
  • Item 3
  • Item 4
  • Item 5
  • Item 6
  • Item 7
  • Item 8
  • Item 9
  • Item 10

Selecionar todos os elementos menos os x primeiros

Podemos até usar um seletor que apanha todas as tags menos os três primeiros elementos.

css
... li:nth-child(n+4) {
	color: red;
}
  • Item 1
  • Item 2
  • Item 3
  • Item 4
  • Item 5
  • Item 6
  • Item 7
  • Item 8
  • Item 9
  • Item 10

Selecionar o primeiro ou o último elemento

Também podemos selecionar o primeiro ou o último elemento com :first-child e :last-child

css
... li:first-child {
	color: red;
}
... li:last-child {
	color: blue;
}
  • Item 1
  • Item 2
  • Item 3
  • Item 1
  • Item 2
  • Item 3

Com isto, podemos também aplicar um desvio para apanhar o penúltimo elemento da lista.

css
li:nth-last-child(2) {
	color: red;
}
  • Item 1
  • Item 2
  • Item 3
  • Item 4
  • Item 5

Combinar seletores

Também podemos combinar seletores nth-child!

Digamos que queres apanhar todos os elementos pares dentro das listas de posição ímpar.

css
ul:nth-child(odd) li:nth-child(even) {
	color: red;
}
html
<ul>
	<li>Item 1</li>
	<li>Item 2</li>
	<li>Item 3</li>
	<li>Item 4</li>
	<li>Item 5</li>
</ul>
<ul>
	<li>Item 1</li>
	<li>Item 2</li>
	<li>Item 3</li>
	<li>Item 4</li>
	<li>Item 5</li>
</ul>
<ul>
	<li>Item 1</li>
	<li>Item 2</li>
	<li>Item 3</li>
	<li>Item 4</li>
	<li>Item 5</li>
</ul>
  • Item 1
  • Item 2
  • Item 3
  • Item 4
  • Item 5
  • Item 1
  • Item 2
  • Item 3
  • Item 4
  • Item 5
  • Item 1
  • Item 2
  • Item 3
  • Item 4
  • Item 5

Conclusão

Espero que este artigo te ajude na integração dos teus sites com a pseudo-classe nth-child. Se quiseres ver que outras pseudo-classes css existem, podes consultar os artigos seguintes:

CSS

Damien Flandrin Programador web desde 2010, criador da Gekkode e do Email Impact. Cada artigo é testado num projeto real antes de ser publicado. Contacto
Newsletter

Os novos testes, tutoriais e projetos, por e-mail.

Testes reproduzíveis, código versionado, resultados datados. Nunca spam.