CSS :last-of-type Pseudo Classe
A pseudo-classe :last-of-type do CSS seleciona o último elemento de seu tipo entre os elementos irmãos. Veja exemplos.
A pseudo-classe CSS :last-of-type seleciona um elemento que é o último elemento de seu tipo entre os filhos de seu pai. "Tipo" aqui significa o nome da tag do elemento — portanto, p:last-of-type corresponde ao último <p> dentro de seu pai, independentemente de quantos outros elementos (divs, títulos, spans) apareçam depois dele.
Esta página aborda o que :last-of-type corresponde, sua sintaxe, como se comporta em diferentes tipos de elementos e — de forma importante — como difere da pseudo-classe de aparência similar :last-child.
A pseudo-classe :last-of-type é equivalente a :nth-last-of-type(1) e seleciona exatamente o mesmo elemento.
Quando utilizá-la
Use :last-of-type quando quiser estilizar o elemento final de uma determinada tag sem depender de sua posição exata. Usos comuns:
- Remover a margem inferior ou borda do último parágrafo em um card.
- Estilizar o último item de lista, imagem ou seção em um contêiner que mistura tipos de elementos.
- Selecionar "o último de seu tipo" quando não é possível garantir que ele também seja o último filho do pai.
Se precisar do elemento que é literalmente o último filho do pai — independentemente do tipo — use :last-child. Veja a comparação abaixo.
Versão
Sintaxe
Sintaxe CSS :last-of-type
:last-of-type {
css declarations;
}Exemplo do seletor :last-of-type:
Exemplo de código :last-of-type
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
p:last-of-type {
background: #8ebf42;
font-style: italic;
color: #eeeeee;
}
</style>
</head>
<body>
<h2>:last-of-type selector example</h2>
<p>Paragraph 1</p>
<p>Paragraph 2</p>
<p>Paragraph 3</p>
</body>
</html>Selecionando elementos pai
O seletor também pode ser aplicado a elementos pai.
O seletor * é implícito quando nenhum seletor de tipo é especificado (por exemplo, *:last-of-type é equivalente a :last-of-type).
No exemplo abaixo, article:last-of-type estiliza o último <article> entre seus irmãos. Note que a pseudo-classe é avaliada por tipo dentro de cada pai: os elementos <em> são agrupados separadamente dos elementos <div> e <b>, então cada tag tem seu próprio "último de tipo".
Exemplo de seleção de elemento pai:
CSS :last-of-type Pseudo Classe
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
article:last-of-type {
background-color: #8ebf42;
}
</style>
</head>
<body>
<article>
<div>This "div" is first.</div>
<div>This <span>nested "span" is last</span>!</div>
<div>This <em>nested "em" is first</em>, but this <em>nested "em" is last</em>!</div>
<b>This "b" qualifies!</b>
<div>This is the final "div"!</div>
</article>
</body>
</html>:last-of-type vs :last-child
Os seletores :last-child e :last-of-type parecem semelhantes, mas respondem a perguntas diferentes:
:last-childcorresponde a um elemento somente se ele for o último filho de seu pai — a posição importa, o tipo não.:last-of-typecorresponde ao último elemento de um determinado tipo, mesmo que outros elementos apareçam depois dele.
Portanto, p:last-of-type corresponde ao último <p> mesmo quando um <span> o segue, enquanto p:last-child não corresponderia a esse <p> (porque o <span> é o último filho de fato). No exemplo abaixo, a regra se aplica ao último parágrafo independentemente dos spans, enquanto span:last-child seleciona apenas o span final — que por acaso é o último filho do body.
Exemplo dos seletores CSS :last-of-type e :last-child:
Seletores :last-of-type e :last-child
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
p:last-of-type {
background: #8ebf42;
font-style: italic;
color: #eee;
}
span {
display: block;
}
span:last-child {
background: #8ebf42;
font-style: italic;
font-weight: bold;
color: #eee;
padding: 10px;
}
</style>
</head>
<body>
<h2>:last-of-type and :last-child selectors example</h2>
<p>Paragraph 1</p>
<p>Paragraph 2</p>
<p>Paragraph 3</p>
<span>Some text</span>
<span>Some text</span>
<span>Some text</span>
</body>
</html>Pontos de atenção
:last-of-typetem escopo por pai: cada elemento pai tem seu próprio "último parágrafo", "último div" e assim por diante.- Funciona apenas em tipos de elementos. Não existe um equivalente baseado em classes —
.box:last-of-typesignifica "o último elemento cujo tipo corresponde ao elemento que também possui a classebox," e não "o último elemento com a classebox." Use:last-childcombinado com uma classe, ou:nth-last-of-type(), para maior controle. - Se um pai tiver apenas um elemento de um determinado tipo, esse único elemento é seu próprio
:last-of-type(e:first-of-type).
Seletores relacionados
:first-of-type— o primeiro elemento de seu tipo.:nth-of-type()e:nth-last-of-type()— correspondência de tipo baseada em posição.:only-of-type— um elemento que é o único de seu tipo.:last-child— o último filho independentemente do tipo.