Seletores de Pseudoelemento: Estilizando partes de um elemento
Entenda como estilizar partes específicas de um elemento, como a primeira letra de um parágrafo.
Você já aprendeu a estilizar elementos inteiros com base em seu tipo, classe, ID, atributos e até mesmo em seus estados ou posições. Mas e se você quiser estilizar apenas uma parte de um elemento? Por exemplo, a primeira letra de um parágrafo, ou a primeira linha de um texto? Ou talvez adicionar um ícone antes ou depois de um conteúdo sem precisar mexer no HTML?
É para isso que servem os Seletores de Pseudoelemento. Eles permitem que você selecione e estilize uma parte específica de um elemento, ou até mesmo conteúdo gerado que não existe diretamente no HTML.
Pense nos pseudoelementos como "sub-elementos" ou "partes invisíveis" que o CSS pode criar ou acessar dentro de um elemento existente.
Como funcionam os Pseudoelementos
Os pseudoelementos são indicados por dois pontos duplos (::) seguidos do nome do pseudoelemento. Eles são adicionados a um seletor existente.
Sintaxe:
seletor::pseudoelemento {
propriedade: valor;
}
Nota: Embora a sintaxe com dois pontos duplos (::) seja a recomendada para pseudoelementos (para diferenciá-los das pseudoclasses), a sintaxe com um único ponto (:) ainda funciona para compatibilidade com navegadores mais antigos. No entanto, é uma boa prática usar ::.
Vamos explorar os pseudoelementos mais comuns:
1. ::first-line
Seleciona e estiliza a primeira linha de um bloco de texto. O comprimento da "primeira linha" depende da largura do elemento e do tamanho da fonte.
Exemplo:
<p>Este é um parágrafo de exemplo para demonstrar o pseudoelemento ::first-line. A primeira linha deste texto será estilizada de forma diferente.</p>p::first-line { font-weight: bold; color: blue; text-transform: uppercase; }Resultado: A primeira linha visível do parágrafo ficará em negrito, azul e em maiúsculas. Se a janela do navegador for redimensionada, a "primeira linha" pode mudar, e o estilo se adaptará.
2. ::first-letter
Seleciona e estiliza a primeira letra de um bloco de texto. É frequentemente usado para criar um efeito de "letra capitular" (drop cap), comum em livros e revistas.
Exemplo:
<p>Era uma vez, em um reino distante, uma princesa que adorava CSS.</p>p::first-letter { font-size: 3em; /* 3 vezes o tamanho da fonte normal */ color: red; float: left; /* Faz a letra flutuar para a esquerda */ margin-right: 5px; }Resultado: A primeira letra 'E' do parágrafo ficará grande, vermelha e flutuará à esquerda, criando um efeito de capitular.
3. ::before e ::after (Conteúdo Gerado)
Estes são os pseudoelementos mais poderosos e versáteis. Eles permitem que você insira conteúdo (texto, ícones, formas) antes (::before) ou depois (::after) do conteúdo real de um elemento, sem precisar adicionar nada ao HTML.
Importante: Para que ::before e ::after funcionem, eles precisam da propriedade content.
Exemplo: Adicionar um ícone antes de links externos.
<a href="https://www.google.com" target="_blank">Visitar Google</a> <a href="/contato">Fale Conosco</a>a[target="_blank"]::before { content: "🔗 "; /* Adiciona um ícone de link antes do texto */ font-size: 0.8em; margin-right: 5px; }Resultado: Apenas o link "Visitar Google" terá um ícone de corrente
🔗antes do texto, pois ele possui o atributotarget="_blank".Exemplo: Adicionar aspas decorativas.
<blockquote>Uma citação inspiradora.</blockquote>blockquote::before { content: "“"; /* Aspas de abertura */ font-size: 3em; color: #ccc; line-height: 0.1; vertical-align: -0.4em; margin-right: 5px; } blockquote::after { content: "”"; /* Aspas de fechamento */ font-size: 3em; color: #ccc; line-height: 0.1; vertical-align: -0.4em; margin-left: 5px; }Resultado: O bloco de citação terá aspas grandes e decorativas antes e depois do texto.
4. ::selection
Estiliza a parte do documento que o usuário selecionou (arrastando o mouse sobre o texto).
Exemplo:
<p>Tente selecionar este texto com o mouse.</p>::selection { background-color: yellow; color: black; }Resultado: Quando o usuário selecionar o texto do parágrafo, o fundo da seleção ficará amarelo e o texto preto.
5. ::placeholder
Estiliza o texto de placeholder em campos de formulário (<input>, <textarea>).
Exemplo:
<input type="text" placeholder="Digite seu nome...">input::placeholder { color: gray; font-style: italic; }Resultado: O texto "Digite seu nome..." dentro do campo de input ficará cinza e em itálico.
Quando usar Pseudoelementos?
- Para estilizar partes específicas de um texto (primeira letra, primeira linha).
- Para adicionar conteúdo puramente decorativo ou informativo (ícones, aspas, marcadores) que não faz parte do conteúdo semântico do HTML.
- Para estilizar a seleção de texto ou placeholders de formulário.
Os pseudoelementos são uma forma elegante e eficiente de adicionar detalhes visuais e aprimorar a experiência do usuário sem poluir o seu HTML com elementos extras. Eles mantêm a separação de preocupações, deixando o HTML focado no conteúdo e o CSS focado na apresentação.