As pseudo-classes e pseudo-elementos são recursos do CSS que permitem estilizar elementos de forma mais específica e dinâmica, de acordo com o estado em que eles se encontram ou com elementos que fazem parte de sua estrutura.
As pseudo-classes permitem selecionar um elemento com base em um estado específico, como por exemplo, quando ele é focado pelo usuário, quando é visitado, quando está em um determinado estado de validação de formulário, entre outros.
Já os pseudo-elementos permitem estilizar partes específicas de um elemento, como o primeiro ou último elemento filho, o primeiro caractere de um texto, ou ainda elementos que estão "antes" ou "depois" de um determinado elemento.
Alguns exemplos de pseudo-classes e pseudo-elementos:
:hover
: aplica estilos quando o cursor do mouse está sobre o elemento:active
: aplica estilos quando o elemento está sendo clicado:focus
: aplica estilos quando o elemento está em foco (como quando é selecionado pelo teclado):visited
: aplica estilos a links já visitados pelo usuário:nth-child()
: seleciona o elemento filho que está em uma posição específica na hierarquia de elementos::before
e::after
: adiciona conteúdo antes ou depois do elemento selecionado, que pode ser estilizado com CSS.
Esses recursos podem ser combinados para criar seletores mais complexos e estilizar elementos de forma mais precisa e dinâmica.
exemplo de como utilizar algumas pseudo-classes e pseudo-elementos em um botão:
HTML:
css<button>Botão</button>
CSS:
cssbutton {
background-color: #007bff;
color: #fff;
border: none;
padding: 10px 20px;
font-size: 16px;
}
button:hover {
background-color: #0069d9;
}
button:active {
background-color: #0053a3;
}
button::before {
content: "→ ";
}
button::after {
content: " ←";
}
Nesse exemplo, estamos utilizando a pseudo-classe :hover
para alterar a cor de fundo do botão quando o cursor do mouse está sobre ele, e a pseudo-classe :active
para alterar a cor de fundo do botão quando ele é clicado.
Também estamos utilizando os pseudo-elementos ::before
e ::after
para adicionar setas antes e depois do texto do botão.
Espero que isso ajude!