Pseudo-classes CSS
Você já domina seletores de tag, class, id e atributo. Falta uma camada: às vezes não quer o mesmo visual sempre; quer mudança quando o ponteiro está sobre o botão, quando alguém chega ao campo com Tab ou quando o link já foi aberto. Para isso existem pseudo-classes — sem class nova no HTML.
O que significa pseudo-classe?
Uma pseudo-classe é uma palavra colada ao seletor com dois-pontos simples (:). No HTML não aparece class="hover". O navegador ativa a regra quando a condição é verdadeira: ponteiro em cima, foco, histórico do link ou posição entre os filhos do pai.
Pseudo-classes comuns
Comece por estas. Há mais nomes, mas costumam bastar para começar na UI.
📊 Pseudo-classes CSS do dia a dia
| Pseudo-classe | Quando ativa | Exemplo |
|---|---|---|
:hover |
O ponteiro está sobre o elemento | a:hover |
:focus |
O elemento tem foco (teclado ou clique) | input:focus |
:visited |
O link já foi visitado (com limites de privacidade) | a:visited |
:first-child |
O elemento é o primeiro filho do pai | li:first-child |
:nth-child(n) |
O n-ésimo filho, ou ímpar/par | tr:nth-child(odd) |
:disabled |
O controle do formulário está desativado | button:disabled |
Hover — :hover
Com :hover a aparência muda enquanto o ponteiro está sobre o elemento. Botões e links parecem vivos com uma mudança pequena — não com um salto de layout.
Hover — feedback do botão
cssbutton:hover {
background-color: #0f766e;
color: #fff;
}
Nota sobre hover
Mantenha a mudança suave. No toque quase não há hover real; não coloque informação essencial só dentro de :hover.
Foco — :focus
:focus pega o elemento ativo agora — por exemplo após Tab. Sem anel de foco visível, quem usa teclado se perde no formulário.
Foco — anel claro no input
cssinput:focus {
outline: 2px solid #0f766e;
outline-offset: 2px;
}
Hover e foco: os dois são necessários
Hover é para o ponteiro. Foco significa «este controle está ativo agora». Só remova outline com um substituto igualmente claro.
Links visitados — :visited
:visited colore links que o navegador acha que você já abriu. Em geral só a cor (e poucas propriedades). Não conte com mudar padding ou layout — a privacidade limita isso.
Visitado — cor suave do link
cssa:visited {
color: #6b21a8;
}
Ordem dos estados do link
Se escrever vários estados juntos, uma ordem segura comum é: link → visited → hover → focus (às vezes LVHA). Assim hover e foco continuam visíveis também em links visitados.
Primeiro filho — :first-child
:first-child significa que o elemento é o primeiro filho do pai — não «o primeiro li da página inteira», e sim o primeiro entre irmãos sob esse pai.
Primeiro filho — destacar o primeiro item
cssli:first-child {
font-weight: 700;
}
Próximo passo: :nth-child
Com :nth-child(odd) ou :nth-child(3) você faz listras ou «cada terceiro». Domine :first-child e depois esses padrões.
Bons hábitos
- Pseudo-classe = dois-pontos simples (
:hover); pseudo-elemento = duplos (::) — próxima sessão - Sempre combine hover interativo com
:focusclaro - Cores visited discretas
- Teste também com Tab, não só com o mouse
Experimente você
- Página curta com
<button>,<input>, alguns links e<ul>com três<li>. - Adicione
button:hover { background-color: #0f766e; color: #fff; }e passe o mouse no botão. - Adicione
input:focus { outline: 2px solid #0f766e; }e entre no campo com Tab. - Adicione
a:visited { color: #6b21a8; }, abra um link e volte. - Adicione
li:first-child { font-weight: 700; }— só o primeiro item fica negrito.
Erros comuns
- Escrever
::hoverem vez de:hover— o duplo é para pseudo-elementos - Estilizar hover e remover outline de foco sem substituto
- Esperar liberdade total de
:visitedpara qualquer propriedade - Achar que
p:first-childsignifica «o primeiro parágrafo em qualquer lugar» - Colocar texto importante só em
:hoverpara o usuário touch nunca ver
Resumo
- Pseudo-classes escolhem por estado ou posição com dois-pontos simples
:hovere:focusdão feedback; mantenha os dois:visitedcolore o link aberto nos limites do navegador:first-childpega o primeiro filho;:nth-childé o próximo passo- Um dois-pontos = pseudo-classe; duplos = pseudo-elemento
- Pratique com mouse, Tab e uma lista curta
🧠 Teste Seu Conhecimento
Teste Seu Conhecimento
Desafie-se com este questionário interativo e veja o quão bem você entende o tópico
📝 Instruções
- Leia cada pergunta cuidadosamente
- Selecione a melhor resposta para cada pergunta
- Você pode refazer o quiz quantas vezes quiser
- Seu progresso será mostrado no topo