Pseudo-classes e pseudo-elementos no css

     Bem-vindo(a) ao post no blog. 


Nesse Post você vai aprender a Diferença entre pseudo-classes (estado) e pseudo-elementos (decoração); Usar :hover, :active, :focus e :nth-child; Criar efeitos visuais com ::before e ::after; Combinar comportamentos e estilos dinâmicos; Montar menus e botões animados apenas com CSS.

🧩 Pseudo-Classes: o comportamento dinâmico no CSS

As pseudo-classes indicam estados ou condições especiais de um elemento.
  Exemplo: quando o mouse passa por cima (:hover), quando um campo está em foco (:focus), ou quando um link foi visitado (:visited).

Elas não criam novos elementos — apenas alteram o estilo dos existentes em situações específicas.

🔸 Principais pseudo-classes: Pseudo-classe         Descrição


:hover   →    Quando o mouse passa sobre o elemento


:active      →   Quando o elemento está sendo clicado


:focus       →     Quando o elemento (input, botão, etc.) está em foco


:visited       →      Quando um link já foi visitado


:first-child        →      Primeiro filho dentro de um contêiner


:last-child        →      Último filho dentro de um contêiner

:nth-child(n)        →        Seleciona o filho na posição n (ou padrões)

🎨 Exemplo Prático — Botão com estados diferentes:


button {

  background-color: #0077ff;

  color: white;

  border: none;

  padding: 12px 20px;

  border-radius: 8px;

  cursor: pointer;

  transition: 0.3s;

}

 

button:hover {

  background-color: #005fd4;

}

 

button:active {

  transform: scale(0.95);

}

 

button:focus {

  outline: 3px solid #00b4ff;

}

 

⚡ O botão ganha aparência clicável e profissional — brilhante no hover, com feedback visual ao clicar e foco claro.

🔸 Exemplo — Estilizando listas com nth-child


li:nth-child(odd) {

  background-color: #f2f2f2;

}

 

li:nth-child(even) {

  background-color: #e2e8ff;

}

 

💬 Isso alterna as cores de cada linha (muito usado em tabelas e listas de preços).

Você pode usar padrões dinâmicos, como:

li:nth-child(3n) {

  color: #0077ff;

}

 

👉 Afeta todo terceiro item.

🪄 Pseudo-Elementos: criando o “CSS que desenha”

Os pseudo-elementos são diferentes:
  Eles adicionam conteúdo “falso” (decorativo) antes ou depois de um elemento — perfeitos para ícones, destaques ou animações.

Os mais comuns são:

●     ::before

●     ::after


⚙️ Sintaxe:


h1::before {

  content: "★ ";

  color: gold;

}

 

h1::after {

  content: " ★";

  color: gold;

}

 

💡 content é obrigatório! Mesmo se for vazio, o pseudo-elemento precisa dele para existir.

Isso cria estrelas decorativas antes e depois do título sem alterar o HTML!

🔹 Espaçamentos e efeitos decorativos:


h2::after {

  content: "";

  display: block;

  width: 50px;

  height: 4px;

  background-color: #0077ff;

  margin: 8px auto;

  border-radius: 2px;

}

 

💥 Esse código desenha uma linha colorida sob o título — usado em muitos sites profissionais.

🔧 Usando Pseudo-elementos para Design e Animação

Você pode usar ::before e ::after para adicionar camadas visuais, bordas animadas, sombreamentos, filtros e muito mais.

💎 Exemplo — Botão com brilho animado


button {

  position: relative;

  overflow: hidden;

  background: #0077ff;

  color: white;

  border: none;

  padding: 12px 24px;

  border-radius: 8px;

  font-weight: 600;

  cursor: pointer;

}

 

button::before {

  content: "";

  position: absolute;

  top: 0;

  left: -100%;

  width: 100%;

  height: 100%;

  background: rgba(255,255,255,0.4);

  transform: skewX(-20deg);

  transition: left 0.4s;

}

 

button:hover::before {

  left: 200%;

}

 

💥 Resultado: ao passar o mouse, uma faixa brilhante percorre o botão, como um reflexo de luz.

💬 Combinando Pseudo-Classes + Elementos

Você pode combinar ambos para criar comportamentos super ricos.

Exemplo — Subtítulo com linha animada:

h2 {

  position: relative;

  display: inline-block;

}

 

h2::after {

  content: "";

  position: absolute;

  width: 0;

  height: 3px;

  bottom: 0;

  left: 0;

  background-color: #0077ff;

  transition: width 0.3s;

}

 

h2:hover::after {

  width: 100%;

}

 

💡 Aqui o ::after desenha uma linha que cresce sob o texto quando você passa o mouse — um efeito sublinhado animado minimalista e moderno.


📘 Para um melhor Aprendizado          🎯 Pratique com exercícios, desafios e projetos



🛠️ Projeto Prático — Menu Animado com Pseudo-elementos

Vamos juntar tudo que aprendemos nesta aula num menu interativo estiloso.

📄 index.html

<!DOCTYPE html>

<html lang="pt-BR">

<head>

  <meta charset="UTF-8">

  <title>Menu Animado</title>

  <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@600&display=swap" rel="stylesheet">

  <link rel="stylesheet" href="style.css">

</head>

<body>

  <nav class="menu">

<a href="#">Início</a>

<a href="#">Serviços</a>

<a href="#">Portfólio</a>

<a href="#">Contato</a>

  </nav>

</body>

</html>

 

📄 style.css

* {

  margin: 0;

  padding: 0;

  box-sizing: border-box;

}

 

body {

  background: linear-gradient(135deg, #89f7fe, #66a6ff);

  display: flex;

  justify-content: center;

  align-items: center;

  height: 100vh;

  font-family: 'Poppins', sans-serif;

}

 

.menu {

  display: flex;

  gap: 40px;

}

 

.menu a {

  position: relative;

  color: white;

  text-decoration: none;

  font-size: 18px;

  padding: 6px 0;

}

 

.menu a::after {

  content: "";

  position: absolute;

  width: 0;

  height: 2px;

  bottom: 0;

  left: 0;

  background: white;

  transition: width 0.3s ease;

}

 

.menu a:hover::after {

  width: 100%;

}

 

.menu a:hover {

  color: #222;

  transition: color 0.3s;

}

 

💥 Resultado:

●     Links com linha que se anima ao passar o mouse;

●     Transição suave de cor no texto;

Menu moderno, sem precisar de JavaScript.

🎨 Técnicas Avançadas de Pseudo-elementos

Além de decorações, você pode usar pseudo-elementos para:

●     Criar formas geométricas (::before com clip-path ou border-radius);

●     Adicionar ícones via fonte ou Unicode;

●     Gerar efeitos de sombra, destaque ou gradiente extra;

●     Construir animações puramente visuais, como barras de progresso ou loading spinners.

Exemplo — Bolinhas pulsantes de carregamento:

.loader {

  display: flex;

  gap: 10px;

}

 

.loader div {

  width: 14px;

  height: 14px;

  border-radius: 50%;

  background: white;

  animation: pulse 1.4s infinite ease-in-out;

}

 

.loader div:nth-child(2) { animation-delay: 0.2s; }

.loader div:nth-child(3) { animation-delay: 0.4s; }

 

@keyframes pulse {

  0%, 80%, 100% { transform: scale(0.8); opacity: 0.6; }

  40% { transform: scale(1); opacity: 1; }

}

 

💡 É leve, acessível e feito com apenas CSS!

Esse conteúdo faz parte do projeto Academy Code Christ, criado para ajudar iniciantes a aprender programação de forma gratuita e direta.

Se esse conteúdo te ajudou, você pode me pagar um café ☕

Pix: antropologiacrista@gmail.com


Comentários

Postagens mais visitadas