Combinadores CSS
Você já sabe mirar elementos com seletores de tipo, class e id. A próxima habilidade: estilizar um elemento porque ele está em certo lugar em relação a outro — dentro de uma seção, só como filho direto, ou logo após um título.
O que são combinadores CSS?
Um combinador CSS é um símbolo (ou um espaço) colocado entre dois seletores. Ele diz ao navegador como essas duas partes devem se relacionar na árvore HTML. O lado esquerdo é a referência; o direito é o que recebe os estilos.
Quatro combinadores em um relance
Aprenda primeiro os símbolos; depois pratique cada um com um exemplo curto.
📊 Combinadores CSS
| Combinador | Símbolo | Corresponde a | Exemplo |
|---|---|---|---|
| Descendente | (espaço) | Qualquer correspondência aninhada dentro de um ancestral | article p |
| Filho | > |
Somente filho direto | ul > li |
| Irmão adjacente | + |
Próximo irmão imediatamente depois | h2 + p |
| Irmão geral | ~ |
Qualquer irmão posterior no mesmo nível | h2 ~ p |
Combinador descendente (espaço)
Um espaço entre seletores significa: «corresponda o segundo seletor em qualquer lugar dentro do primeiro». A profundidade não importa — netos e níveis mais profundos também correspondem.
Descendente — parágrafos dentro de article
cssarticle p {
color: #334155;
line-height: 1.6;
}
Quando descendentes ajudam
Use o combinador descendente para aparência compartilhada numa região: todos os parágrafos de um article, todos os links de um nav. Se quiser só filhos diretos e as correspondências profundas forem largas demais, mude para o combinador filho.
Combinador filho (>)
O > corresponde apenas a filhos diretos. Um elemento aninhado mais fundo não corresponde.
Filho — apenas itens de lista diretos
css.menu > li {
list-style: none;
padding: 0.5rem 1rem;
}
Espaço vs > numa imagem
Se o HTML for <ul class="menu"><li>One<ul><li>Nested</li></ul></li></ul>, então .menu > li estiliza só o li externo. Um descendente .menu li estiliza o externo e o aninhado.
Combinador irmão adjacente (+)
O + corresponde ao elemento que vem imediatamente depois da referência irmã — mesmo pai, porta ao lado, sem outro elemento no meio.
Irmão adjacente — primeiro parágrafo após h2
cssh2 + p {
font-size: 1.125rem;
color: #0f766e;
}
Um padrão comum
Muitos layouts querem que o primeiro parágrafo após um título pareça um pouco diferente (texto de abertura). h2 + p mira esse vizinho sem dar class a cada parágrafo.
Combinador irmão geral (~)
O ~ corresponde a cada irmão posterior que combine com o segundo seletor — não só o próximo imediato. Ainda precisam compartilhar o mesmo pai.
Irmão geral — parágrafos após h2
cssh2 ~ p {
max-width: 40rem;
}
+ vs ~
h2 + p— só o parágrafo logo após oh2h2 ~ p— cadapirmão que seguir esseh2(primeiro, segundo, terceiro…)
Se umdivficar entreh2e ump,h2 + pfalha para essep, mash2 ~ painda pode corresponder a parágrafos irmãos posteriores.
Escolher um combinador
- Prefira descendente para «tudo deste tipo nesta região»
- Prefira filho quando o aninhamento estilizaria listas ou widgets que você não quis
- Prefira irmão adjacente para um padrão de vizinho em um passo (título → primeiro parágrafo)
- Prefira irmão geral quando vários pares após um marcador devem compartilhar aparência
Mantenha cadeias curtas enquanto aprende. Cadeias longas são poderosas — e fáceis de quebrar se o HTML mudar.
Experimente você mesmo
- Monte uma página curta com um
<article>contendo<h2>, um<p>, um<div>com outro<p>dentro e depois mais um<p>após odiv. - Adicione
article p { color: #334155; }e confirme que ambos os parágrafos do artigo mudam (descendente). - Mude para
article > p { color: #0f766e; }e atualize — só parágrafos filhos diretos devem manter essa cor; opaninhado nodiv, não. - Adicione
h2 + p { font-weight: bold; }e confirme que só o parágrafo imediatamente após o título fica em negrito. - Opcional: teste
h2 ~ p { max-width: 36rem; }e veja que cada parágrafo irmão após o título recebe o max-width.
Erros comuns
- Usar descendente quando queria filho — widgets aninhados herdam estilos pensados só para o nível superior
- Esperar que
h2 + ppule um elemento entre o título e o parágrafo — adjacente significa imediato - Ler o combinador ao contrário — os estilos vão para o seletor da direita, não a referência esquerda
- Colocar vírgula onde queria combinador (
h2, pagrupa; não significa «p após h2») - Assumir que
~exige vizinhos colados — irmão geral só pede «irmão posterior»
Resumo
- Combinadores unem seletores por relação HTML: dentro, filho direto, próximo irmão ou irmãos posteriores
- Espaço = descendente (qualquer profundidade);
>= só filho direto += próximo irmão imediato;~= qualquer irmão posterior correspondente- Os estilos aplicam-se ao seletor à direita do combinador
- Escolha o combinador mais apertado que ainda expresse sua intenção
- Pratique trocando espaço por
>e comparando+com~na mesma página
🧠 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