Part e Exportparts para estilização externa
Exponha partes do DOM de sombra ao CSS externo com part e exportparts.
Part e Exportparts para estilização externa é uma aula grátis de HTML Academy no CoddyKit. Esta é a aula 4 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.
O compromisso do encapsulamento
O encapsulamento rigoroso de estilos do DOM de sombra impede que os consumidores alterem individualmente os elementos dentro de um componente. As variáveis de CSS funcionam para propriedades globais, mas não é possível, por exemplo, definir um border-radius personalizado para o botão interno de fechar. Os parts resolvem esse problema.
O atributo part
Marque um elemento interno da sombra com part="name". Os consumidores poderão então selecioná-lo com o pseudo-elemento ::part(name): my-dialog::part(close-button) { color: red; }. O elemento nomeado se torna um ponto de extensão para estilização, enquanto o restante da sombra continua encapsulado.
// Shadow tree:
<button part="close-button">×</button>
// Page CSS:
my-dialog::part(close-button) {
color: red;
border-radius: 50%;
}Vários parts em um elemento
Separe os nomes por espaços para expor um elemento como vários parts: part="button primary". ::part(button) o seleciona de forma genérica, enquanto ::part(primary) o seleciona como um elemento de estilo primário. Cada nome é correspondido de forma independente.
Limitações de ::part
::part permite apenas alguns pseudo-elementos (:hover, :focus, :disabled) — não permite combinadores de descendentes nem seleções estruturais adicionais. ::part(card) p é inválido; não é possível entrar em um part usando seletores de descendentes.
exportparts encaminha parts
Quando um elemento personalizado aninha outro elemento personalizado dentro da própria sombra, os parts do elemento interno normalmente não são expostos à página externa. exportparts="close-button" no elemento aninhado encaminha esses parts para o elemento hospedeiro externo.
// Outer shadow:
<inner-element exportparts="close-button"></inner-element>
// Page:
outer-element::part(close-button) { color: red; }Renomeando ao exportar
exportparts="close-button: dismiss" exporta o part interno com um novo nome no elemento externo. Isso permite que o componente externo apresente uma interface de nomes limpa, independente dos elementos internos que ele combina.
Parts versus propriedades personalizadas de CSS
As propriedades personalizadas expõem valores (cor, espaçamento e fontes). Os parts expõem elementos (toda a superfície de CSS — bordas, transformações e animações). Use propriedades personalizadas para tokens globais e parts para personalizações pontuais no nível do elemento. Ambos podem coexistir no mesmo componente.
Padrão de aplicação de temas
Na prática de sistemas de componentes, exponha uma pequena interface de parts para os elementos mais personalizados (botões, cabeçalhos e indicadores), além de um conjunto generoso de propriedades personalizadas para cor, espaçamento e tipografia. Os consumidores podem aplicar temas no nível dos valores ou dos elementos, conforme a necessidade.
Estabilidade dos nomes de parts
Os nomes dos parts tornam-se parte da API pública do componente — alterá-los quebra o CSS dos consumidores. Escolha nomes que descrevam a função do elemento ("close-button", "header", "track"), em vez da posição ("first-button"), para que a API continue significativa à medida que a implementação evolui.
Dicas para a documentação
Liste todos os parts disponíveis (e os parts exportados) no arquivo README do componente. Sem documentação, os consumidores precisam inspecionar o DOM para descobrir os parts, o que os acopla ao que encontrarem. Trate a lista de parts como a lista de propriedades de um componente de uma estrutura.
Compatibilidade dos navegadores
::part e exportparts estão disponíveis em todos os navegadores modernos. Até versões mais antigas do Safari já oferecem suporte a ::part. Use-os sem receio; para navegadores muito antigos (em sua maioria obsoletos), use propriedades personalizadas de CSS adicionais como alternativa.
Verificação de conhecimento
O que o atributo exportparts faz?
Resumo
O atributo part expõe elementos individuais da sombra para estilização externa por meio de ::part(name) — todos os recursos de CSS sem quebrar o encapsulamento. exportparts encaminha parts de elementos personalizados aninhados para o elemento hospedeiro externo, com a opção de renomeá-los. Combine parts com propriedades personalizadas de CSS para obter uma interface completa de aplicação de temas e documente a lista de parts como parte da API do componente.
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 “Part e Exportparts para estilização externa” é grátis?
Sim — o texto completo de “Part e Exportparts para estilização externa” é 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 “Part e Exportparts para estilização externa”?
Exponha partes do DOM de sombra ao CSS externo com part e exportparts. 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 4 de 4.
Quanto tempo leva a aula “Part e Exportparts para estilização externa”?
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
- attachShadow e raiz de sombra
- Elementos slot para distribuição de conteúdo
- Estilos com escopo dentro do DOM de sombra
- Part e Exportparts para estilização externa