O que são Seletores CSS?
Seletores são padrões utilizados para selecionar elementos específicos em um documento HTML para aplicar estilos CSS. Eles permitem que você estilize elementos de forma precisa e eficiente.
Exemplo de seletor no CSS:
O exemplo acima seleciona todos os elementos <p> e aplica a cor vermelha ao texto.
Tipos de Seletores CSS
- Seletor de Tipo: Seleciona todos os elementos de um tipo específico. Exemplo:
p
seleciona todos os parágrafos.
- Seletor de Classe: Seleciona todos os elementos com uma classe específica. Exemplo:
.classe
seleciona todos os elementos com a classe "classe".
- Seletor de ID: Seleciona um elemento com um ID específico. Exemplo:
#id
seleciona o elemento com o ID "id".
- Seletor de Atributo: Seleciona elementos com um atributo específico. Exemplo:
input[type="text"]
seleciona todos os elementos input com o atributo type igual a "text".
- Seletor de Descendente: Seleciona elementos que são descendentes de um elemento específico. Exemplo:
div p
seleciona todos os parágrafos dentro de divs.
- Seletor de Filho: Seleciona elementos que são filhos diretos de um elemento específico. Exemplo:
div > p
seleciona todos os parágrafos que são filhos diretos de divs.
- Seletor de Irmão Adjacente: Seleciona um elemento que é imediatamente precedido por um elemento específico. Exemplo:
h1 + p
seleciona o parágrafo imediatamente após um h1.
- Seletor de Irmão Geral: Seleciona todos os elementos que são precedidos por um elemento específico. Exemplo:
h1 ~ p
seleciona todos os parágrafos precedidos por um h1.
Dica de aula: Atalho para comentar no VSCode: selecione o trecho que deseja comentar e pressione: "ctrl + ;"
Seletor de ID: #
O atributo id é utilizado para identificar de forma única um elemento HTML. Ele serve para aplicar estilos específicos via CSS ou manipular o elemento diretamente com JavaScript. Cada id deve ser único dentro de um documento HTML, garantindo que o elemento possa ser selecionado e estilizado de maneira precisa.
Exemplo no HTML:
<h1 id="capitulo">Capítulo 15</h1>
Exemplo no CSS:
#capitulo {
font-family: Georgia, 'Times New Roman', Times, serif;
font-size: 2.5em;
background-image: radial-gradient(circle, #567eb942, #bad5dd);
}
OBS.: Se houver personalização conflitante entre o h1 e o id, o CSS vai sempre priorizar a personalização de id.
OBS.: Segundo o W3C, não podemos usar mais de um id no mesmo HTML. Por mais que funcione, isso não está correto.
Atalho:
Para selecionar mais de uma parte do texto ao mesmo tempo, basta segurar a tecla "ALT" e clicar ou selecionar com o mouse os locais que deseja editar simultaneamente.
Seletor de Classe: .
A classe é um atributo utilizado para aplicar estilos a um ou mais elementos HTML. Ao contrário do id, que deve ser único em um documento, várias tags podem compartilhar a mesma classe, permitindo a aplicação de estilos comuns a múltiplos elementos.
Exemplo no HTML:
<p class="destaque">Texto em destaque</p>
Exemplo no CSS:
.destaque {
color: red;
font-weight: bold;
}
Exemplo de funcionamento:
Texto em destaque
Mais de uma classe no mesmo elemento
É possível adicionar mais de uma classe no mesmo elemento. Exemplo no HTML:
<p class="mark mark2"></p>
Exemplo no CSS:
.mark {
background-color: yellow;
}
.mark2 {
font-size: 2.5em;
}
Também é possível adicionar id e classe no mesmo elemento. Mas, nesse caso, as configurações do id se sobrepõem caso haja conflito com a classe.
O que NUNCA fazer!
Nunca devemos nomear a classe com a característica que ela gera para o elemento. Pois, quando se faz isso, você perde toda a semântica do seu HTML. Outro ponto é que, se por acaso quiser mudar a personalização da classe um dia, provavelmente irá acontecer algo do tipo:
.bgvermelho {
background-color: yellow;
}
.fontgrande {
font-color: #7bd768;
}
Note que o exemplo acima ficou uma zona!
Pseudo-classes: :
Pseudo-classes são palavras-chave adicionadas aos seletores que especificam um estado especial do elemento selecionado. Elas permitem que você aplique estilos a um elemento em seu estado ou comportamento dinâmico. Por exemplo, você pode usar pseudo-classes para mudar o ponteiro do mouse para uma mãozinha que indica que pode clicar, ou para destacar um campo quando o mouse passa sobre ele.
Exemplo de funcionamento:
Passe o mouse aqui
Veja abaixo alguns exemplos de pseudo-classes:
- :hover: Gera uma reação quando o mouse passa sobre o elemento;
- :visited: Modifica a forma de um link que já foi visitado;
- :link: Adiciona um estilo especial a um link não visitado;
- :active: Adiciona um estilo especial a um link selecionado (clicado);
- :focus: Deixa marcado o último item clicado;
- :lang: Permite que o autor especifique uma linguagem a ser usada em um elemento específico;
- :nth-child(n): Seleciona o enésimo filho de um elemento pai.
- :nth-last-child(n): Seleciona o enésimo filho a partir do último filho de um elemento pai.
- :nth-of-type(n): Seleciona o enésimo elemento de um tipo específico.
- :nth-last-of-type(n): Seleciona o enésimo elemento de um tipo específico a partir do último.
- :first-child: Seleciona o primeiro filho de um elemento pai.
- :last-child: Seleciona o último filho de um elemento pai.
- :only-child: Seleciona um elemento que é o único filho de seu pai.
- :empty: Seleciona elementos que não têm filhos (incluindo nós de texto).
Lista com cores alternadas
Exemplo de código no head:
<style>
ul.alternating li:nth-child(odd) {
background-color: lightgray;
}
ul.alternating li:nth-child(even) {
background-color: lightcoral;
}
</style>
Exemplo de código no body:
<ul class="alternating">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
</ul>
Exemplo de funcionamento:
- Item 1
- Item 2
- Item 3
- Item 4
- Item 5
Note que os itens ímpares têm um fundo cinza claro, enquanto os itens pares têm um fundo coral claro. Isso é feito usando as pseudo-classes :nth-child(odd)
e :nth-child(even)
para selecionar os elementos ímpares e pares, respectivamente.
Pseudo-elementos: ::
Pseudo-elementos são acessórios que ficam em volta do elemento principal. É como uma personalização, porém, em vez de modificar cores ou fontes, essa personalização insere novos elementos como uma seta ou textos para dar destaque, ou alertas, vai depender da sua intenção.
Agora veja exemplos de funcionamento e códigos:
Exemplo de código no head:
<style>
.exafter::after {
content: '<<<<';
}
</style>
Exemplo de código no body:
<p class="exafter">
agora
</p>
Exemplo de funcionamento:
agora
Note que não dá para selecionar o after.
Pseudo-elementos mais utilizados
- ::after: Insere conteúdo após o elemento selecionado.
- ::before: Insere conteúdo antes do elemento selecionado.
- ::first-letter: Aplica estilos à primeira letra do elemento selecionado.
- ::first-line: Aplica estilos à primeira linha do elemento selecionado.
- ::selection: Aplica estilos à parte do documento que foi selecionada pelo usuário.
- ::placeholder: Aplica estilos ao texto de placeholder de um input ou textarea.
- ::backdrop: Aplica estilos ao fundo de um elemento em tela cheia.
- ::marker: Aplica estilos aos marcadores de lista.
- ::cue: Aplica estilos às legendas de mídia.
- ::part: Aplica estilos a partes específicas de um elemento personalizado.
Hierarquia CSS
Como já vimos, quanto mais específico maior o grau hierárquico do estilo, logo se usar uma children para definir um item essa será a prioridade do CSS.
- Inline
- Interno
- id
- class
- children
- comum
- Externo
- id
- class
- children
- comum