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
- Aninhamento nativo de CSS
- :has(): pseudo-classe relacional
- @scope para estilos com escopo
- API View Transitions