HTML Academy · Aula

Estilos com escopo dentro do DOM de sombra

Escreva CSS que afete somente elementos dentro da árvore de sombra.

Aula 3 de 413 etapas

Estilos com escopo dentro do DOM de sombra é uma aula grátis de HTML Academy no CoddyKit. Esta é a aula 3 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 HTML Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de HTML Academy inclui 4 aulas no total.

Encapsulamento de CSS por padrão

Cada regra de <style> dentro de uma raiz de sombra se aplica somente dentro dessa raiz. p { color: red } em uma árvore de sombra colore apenas os parágrafos dentro dela — os parágrafos do documento principal não são afetados, e os estilos do documento principal não chegam à sombra.

Por que o encapsulamento é importante

O encapsulamento elimina o problema do CSS global que aflige aplicações grandes há décadas. Os estilos de um componente não podem ser sobrescritos acidentalmente pelo CSS do site, e o componente não pode danificar o site por acidente. O limite é definido pela especificação, não por uma convenção.

O pseudo-elemento :host

De dentro da sombra, estilize o elemento hospedeiro com :host. Use :host(selector) para restringir por seletor: :host([open]) { display: block; } corresponde ao hospedeiro somente quando o atributo open está presente.

As propriedades herdadas ainda atravessam

As propriedades de CSS herdadas (color, font-family, line-height) ainda atravessam o limite da sombra por herança. Uma definição body { color: blue } no documento também deixa o texto da sombra azul, a menos que a sombra o sobrescreva explicitamente. Isso é uma característica útil: os padrões tipográficos permanecem consistentes.

As propriedades personalizadas de CSS atravessam o limite

As propriedades personalizadas (variáveis de CSS) são herdadas através das raízes de sombra, o que as torna a forma padrão de expor uma API de temas de um componente: declare --card-bg: var(--surface, white) dentro da sombra e permita que os consumidores substituam --surface no elemento hospedeiro.

/* Shadow */
:host {
  background: var(--card-bg, white);
}
/* Page */
my-card {
  --card-bg: #f3f4f6;
}

::part para estilização externa

Marque um elemento interno da sombra com part="name", e os consumidores poderão estiliza-lo com my-card::part(name) { ... }. Use parts como pontos de extensão para estilização individual, mantendo a maior parte da árvore de sombra encapsulada.

Folhas de estilo adotadas

shadowRoot.adoptedStyleSheets = [sheet] compartilha uma CSSStyleSheet entre várias raízes de sombra, evitando a análise repetida de <style>. Crie folhas com new CSSStyleSheet() e sheet.replaceSync(cssText). Isso gera um grande ganho de desempenho em sistemas de componentes.

Ordem das declarações

Coloque as tags <style> no início do innerHTML da sombra para que os estilos sejam analisados antes da construção do restante do DOM. Isso evita o breve aparecimento de conteúdo sem estilo que ocorre quando os estilos chegam tarde na ordem de análise.

:host-context para regras baseadas em ancestrais

:host-context(.dark-mode) :host estiliza o elemento hospedeiro com base em um seletor ancestral fora da sombra. Isso é útil para aplicar temas aos componentes com base em uma classe de um contêiner de nível superior. A compatibilidade dos navegadores é boa, mas verifique-a na matriz de navegadores de destino.

A redefinição global permanece fora

As redefinições de CSS em todo o documento (margens em body, box-sizing) não afetam as árvores de sombra. Reaplique as redefinições necessárias dentro de cada raiz de sombra ou compartilhe-as por meio de uma folha de estilo construída e adotada em cada componente.

Depurando estilos da sombra

O Chrome DevTools mostra as raízes de sombra no painel Elements, sob "#shadow-root (open)". Você pode inspecionar, editar e alternar os estilos da sombra como qualquer outro CSS, incluindo o pseudo-elemento :host e as regras ::part.

Verificação de conhecimento

Por que as propriedades personalizadas de CSS (variáveis) são a forma preferida de aplicar temas a um componente do DOM de sombra?

Resumo

O DOM de sombra encapsula os estilos em ambas as direções. Estilize o elemento hospedeiro com :host, exponha pontos de extensão de temas por meio de propriedades personalizadas de CSS herdadas, exponha elementos individuais para estilização com ::part, compartilhe folhas de estilo com adoptedStyleSheets e reaplique as redefinições dentro de cada raiz de sombra, pois o CSS de todo o documento não atravessa o limite.

Grátis para começar

Aprenda HTML com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
40
Aulas
159

Perguntas Frequentes

A aula “Estilos com escopo dentro do DOM de sombra” é grátis?

Sim — o texto completo de “Estilos com escopo dentro do DOM de sombra” é 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 HTML Academy, atualize para CoddyKit PRO. O curso de HTML Academy inclui 4 aulas no total.

O que vou aprender em “Estilos com escopo dentro do DOM de sombra”?

Escreva CSS que afete somente elementos dentro da árvore de sombra. Você pratica HTML 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 HTML Academy?

Nenhuma experiência prévia é necessária. HTML 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 3 de 4.

Quanto tempo leva a aula “Estilos com escopo dentro do DOM de sombra”?

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 HTML Academy?

Sim. Cada aula de HTML 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. attachShadow e raiz de sombra
  2. Elementos slot para distribuição de conteúdo
  3. Estilos com escopo dentro do DOM de sombra
  4. Part e Exportparts para estilização externa
← Voltar para HTML Academy