Seletores e cascata
Quando duas regras dão cores diferentes ao mesmo elemento, o CSS não adivinha. Ele compara os seletores, e um id vence qualquer quantidade de classes.
Escolhendo elementos
Um seletor é um padrão que corresponde a elementos da página. Os mais simples escolhem pelo nome do elemento, pela classe ou pelo id. p é um seletor de tipo e corresponde a todo parágrafo. .note é um seletor de classe e corresponde a todo elemento com class="note"; um elemento pode ter várias classes separadas por espaços, e uma classe pode ser usada em muitos elementos. #intro é um seletor de id e corresponde ao único elemento com id="intro". *, o seletor universal, corresponde a tudo.
p { line-height: 1.5; } /* every p */
.note { background: #fff4d6; } /* class="note" */
#intro { font-size: 20px; } /* id="intro" */
h1, h2 { font-weight: 600; } /* group: h1 and h2 */
nav a { text-decoration: none; } /* a anywhere inside nav */
ul > li { margin: 4px 0; } /* li that is a direct child of ul */
a:hover { text-decoration: underline; }
input[type="email"] { width: 20em; }Combinando seletores
Uma vírgula agrupa seletores que têm as mesmas declarações, então h1, h2 estiliza os dois. Um espaço é o combinador descendente: nav a corresponde a links em qualquer lugar dentro de um nav, por mais fundo que estejam. > é mais rígido e só corresponde a filhos diretos. Escrever dois seletores simples juntos, sem espaço, como em a.active, quer dizer que um mesmo elemento precisa corresponder aos dois: um link que também tem a classe active. Seletores de atributo, entre colchetes, escolhem pelo atributo, como input[type="email"].
Pseudoclasses, escritas com dois-pontos simples, selecionam elementos num certo estado ou posição: :hover enquanto o ponteiro está em cima, :focus-visible quando o elemento tem o foco do teclado, :first-child quando é o primeiro filho do seu pai. Pseudoelementos, escritos com dois-pontos duplos, estilizam uma parte de um elemento, como ::first-line ou ::placeholder.
Quando as regras discordam
Muitas vezes várias regras definem a mesma propriedade no mesmo elemento. A cascata, o C de CSS, decide qual vence. Deixando de lado os estilos do próprio navegador e o !important, duas perguntas resolvem quase todos os casos. Primeira: qual seletor é mais específico? A especificidade é contada em três números: ids, depois classes (incluindo seletores de atributo e pseudoclasses), depois nomes de elementos. #menu a vale 1-0-1, .active vale 0-1-0 e nav a vale 0-0-2. Os números são comparados a partir da esquerda, então um id vence qualquer quantidade de classes. Segunda: se a especificidade é igual, vence a regra que vem depois na folha de estilo.
Atributos style inline vencem qualquer seletor, e uma declaração marcada com !important vence as normais. Os dois são remendos rápidos tentadores, mas dificultam a próxima mudança, porque o único jeito de sobrescrevê-los é usar mais do mesmo. A maioria das equipes mantém a especificidade baixa e uniforme, estilizando quase tudo com classes, para que a ordem no arquivo baste para prever o resultado.
Herança
Algumas propriedades passam do pai para o filho automaticamente. Defina color ou font-family no body e todo parágrafo, lista e célula de tabela lá dentro herda o valor, a menos que uma regra defina o seu. As propriedades ligadas ao texto em geral são herdadas; as ligadas à caixa, como width, padding, border e margin, não são, e é por isso que uma borda numa seção não aparece em volta de cada parágrafo dela. A palavra-chave inherit obriga uma propriedade a copiar o valor do pai.
Dê nome às classes pelo que a coisa é, não pela aparência. .warning continua fazendo sentido quando o designer troca a cor de vermelho para laranja; .red-text não. Ids são únicos, então é melhor guardá-los para alvos de links e rótulos de formulários do que para estilo, o que mantém a especificidade baixa.
| seletor de tipo | p, h1, a: todo elemento com esse nome |
| seletor de classe | .nome: todo elemento com essa classe |
| seletor de id | #nome: o único elemento com esse id |
| combinador descendente | Um espaço: nav a = a em qualquer lugar dentro de nav |
| pseudoclasse | :hover, :focus-visible: um estado ou posição |
| especificidade | ids-classes-tipos, comparados a partir da esquerda |
| cascata | As regras que decidem qual declaração vence |
| herança | Propriedades de texto passam do pai para o filho |
- Qual seletor corresponde a
<p class="note">?- .note
- #note
- note
- A que
nav acorresponde?- Links em qualquer lugar dentro de um nav
- Elementos nav e todos os links
- Só links que são filhos diretos de nav
- O que
h1, h2faz?- Aplica a regra tanto ao h1 quanto ao h2
- Corresponde a h2 dentro de h1
- Não corresponde a nada
- Qual é a especificidade de
#menu .item a?- 1-1-1
- 0-2-1
- 1-0-2
.a.b.c(0-3-0) e#x(1-0-0) definem cores diferentes para um mesmo elemento. Qual vence?- #x
- .a.b.c
- The one written later
- Duas regras têm a mesma especificidade. Qual vence?
- A que vem depois na folha de estilo
- A que vem antes
- Nenhuma se aplica
- Qual propriedade é herdada por padrão?
- color
- border
- padding
- Qual pseudoclasse estiliza um elemento que tem o foco do teclado?
- :focus-visible
- :hover
- :first-child
- A que
a.activecorresponde?- Um link que tem a classe active
- Qualquer elemento com a classe active dentro de um link
- Todos os links e todos os elementos .active
- Por que evitar !important nos ajustes do dia a dia?
- Ele só pode ser sobrescrito com mais !important, então as mudanças seguintes ficam mais difíceis
- Não é CSS válido
- Deixa o navegador lento
- p, .classe, #id; vírgula agrupa; espaço quer dizer descendente; > quer dizer filho.
- A especificidade ids-classes-tipos decide; em caso de empate, vence a regra que vem depois.
- Propriedades de texto são herdadas; propriedades de caixa não.
Fontes deste curso (6)
- W3C CSS Working Group specifications: CSS Snapshot 2025, Selectors Level 4, CSS Cascading and Inheritance Level 5, CSS Color Level 4, CSS Values and Units Level 4, CSS Box Model Level 3, CSS Box Sizing Level 3, CSS Fonts Level 4, CSS Flexible Box Layout Level 1, CSS Grid Layout Level 2, Media Queries Level 4 and Level 5 (w3.org/TR/, checked 2026-10-17)
- MDN Web Docs, Learn web development: CSS styling basics and CSS layout, and the CSS reference (developer.mozilla.org/en-US/docs/Learn_web_development/Core/Styling_basics, .../Core/CSS_layout, developer.mozilla.org/en-US/docs/Web/CSS, checked 2026-10-17)
- W3C, CSS history and CSS1 Recommendation of 17 December 1996 (w3.org/Style/CSS20/history.html, w3.org/press-releases/1996/css1-rec, checked 2026-10-17)
- W3C WCAG 2.2, success criteria 1.4.3 Contrast (Minimum)
- 1.4.8 Visual Presentation, 1.4.10 Reflow, 1.4.12 Text Spacing (w3.org/TR/WCAG22/, checked 2026-10-17)
- every code exercise checked with a Playwright probe against a reference solution.
Data de verificação: 2026-10-17