0Pricing
CSS Academy · Aula

Aninhamento nativo de CSS

Escreva regras CSS aninhadas sem um pré-processador usando a especificação de aninhamento nativo do CSS.

Aninhamento nativo de CSS é uma aula grátis de CSS Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de CSS Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de CSS Academy inclui 4 aulas no total.

O que é aninhamento de CSS?

O aninhamento nativo do CSS (compatibilidade básica desde 2024, em todos os navegadores modernos) permite escrever regras CSS dentro de outras regras, reproduzindo a sintaxe de aninhamento antes disponível apenas nos pré-processadores Sass/Less. As regras aninhadas herdam automaticamente o contexto do seletor pai.

Sintaxe básica de aninhamento

Escreva seletores filhos dentro do bloco de regras pai. O navegador combina automaticamente os seletores pai e filho. Um & (seletor de aninhamento) referencia explicitamente o seletor pai para modificadores e pseudoclasses.

<div class="card is-active">
  <div class="title">Nested Card Title</div>
  <p>Card body text.</p>
</div>

O seletor de aninhamento &

& representa explicitamente o seletor pai nas regras aninhadas. Use-o para pseudoclasses (&:hover), pseudo-elementos (&::before), classes modificadoras (&.active) e seletores de atributo (&[disabled]). Sem &, as regras aninhadas criam seletores descendentes.

Aninhamento de pseudo-elementos

Aninhe naturalmente as regras de pseudo-elementos dentro do pai: .button { &::before { content: ""; } &::after { content: ""; } }. Isso mantém todos os estilos do botão juntos, evitando a repetição de seletores exigida no CSS plano.

Aninhamento de regras @

Consultas de mídia e outras regras @ podem ser aninhadas dentro de regras (Chrome 112+, Firefox 117+): .card { padding: 1rem; @media (min-width: 768px) { padding: 2rem; } }. Os estilos responsivos ficam junto ao elemento que afetam, em vez de permanecerem em um bloco separado de consulta de mídia no final do arquivo.

Especificidade dos seletores

O aninhamento não altera as regras de especificidade — o seletor combinado tem a mesma especificidade de quando é escrito sem aninhamento. .card .title escrito com ou sem aninhamento tem a mesma especificidade (0,2,0). O aninhamento é uma conveniência sintática, não uma alteração de especificidade.

Descendente implícito versus & explícito

Um seletor aninhado sem & cria um seletor descendente: .card { .title {} } é compilado como .card .title. Com &: .card { &.active {} } é compilado como .card.active (sem espaço — classe modificadora, não descendente).

BEM com aninhamento nativo

O aninhamento nativo não é ideal para BEM — os seletores .block__element e .block--modifier são cadeias de caracteres, e o aninhamento não consegue construí-los apenas com &. Use aninhamento para pseudoclasses e estruturas de componentes aninhadas, em vez de concatenação de cadeias de caracteres do BEM (que ainda requer um pré-processador).

Migrando do Sass

A maior parte da sintaxe de aninhamento do Sass é idêntica à do aninhamento nativo do CSS. Exceção: o Sass permite a concatenação de cadeias de caracteres com &-modifier, o que o CSS nativo não permite. Migre verificando os padrões &- ou &__ e achatando essas regras específicas, enquanto mantém os demais aninhamentos.

Compatibilidade dos navegadores

O aninhamento nativo do CSS é compatível com Chrome 112+, Firefox 117+ e Safari 16.5+. Para oferecer compatibilidade com navegadores mais antigos, use PostCSS com postcss-nesting para transformar a sintaxe de aninhamento nativo em CSS plano durante a compilação, permitindo escrever hoje usando o aninhamento nativo.

DevTools e aninhamento

O Chrome DevTools mostra regras aninhadas no painel de estilos em sua forma aninhada. Clicar em uma regra aninhada leva ao local correto do código-fonte no painel de fontes. Depurar CSS aninhado é tão claro quanto depurar CSS plano nas versões modernas do DevTools.

Verificação de conhecimento

Qual é a diferença entre o aninhamento com e sem o seletor &?

Resumo

O aninhamento nativo do CSS permite uma sintaxe aninhada semelhante à do Sass em CSS puro. O seletor & cria seletores compostos para pseudoclasses, pseudo-elementos e modificadores. Consultas de mídia aninhadas mantêm os estilos responsivos junto aos elementos correspondentes. O PostCSS transforma o aninhamento nativo para navegadores mais antigos, permitindo uma adoção gradual hoje.

Perguntas Frequentes

A aula “Aninhamento nativo de CSS” é grátis?

Sim — o texto completo de “Aninhamento nativo de CSS” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de CSS Academy, atualize para CoddyKit PRO. O curso de CSS Academy inclui 4 aulas no total.

O que vou aprender em “Aninhamento nativo de CSS”?

Escreva regras CSS aninhadas sem um pré-processador usando a especificação de aninhamento nativo do CSS. Você pratica CSS Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar CSS Academy?

Nenhuma experiência prévia é necessária. CSS Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Aninhamento nativo de CSS”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de CSS Academy?

Sim. Cada aula de CSS Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Aninhamento nativo de CSS
  2. :has(): pseudo-classe relacional
  3. @scope para estilos com escopo
  4. API View Transitions
← Voltar para CSS Academy