CSS Academy · Aula

Estilização de modais e diálogos

Estilize elementos de diálogo HTML nativos e modais personalizados com plano de fundo, posicionamento e animações.

Aula 2 de 413 etapas

Estilização de modais e diálogos é uma aula grátis de CSS Academy no CoddyKit. Esta é a aula 2 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.

Elemento de diálogo nativo

O elemento HTML <dialog> oferece comportamento modal integrado: aprisionamento do foco, fechamento com Escape e API showModal() / close(). Estilize-o com CSS em vez de criar toda a estrutura de um modal personalizado do zero.

Estilização do plano de fundo

O pseudo-elemento ::backdrop estiliza a sobreposição atrás de um <dialog> aberto. Aplique um plano de fundo semitransparente: dialog::backdrop { background: rgba(0,0,0,0.5); backdrop-filter: blur(4px); }. Nenhum elemento div contêiner é necessário.

Disposição do diálogo

Centralize os diálogos com CSS: dialog { margin: auto; max-width: min(90vw, 640px); max-height: 90vh; overflow-y: auto; }. Usar margin: auto em um diálogo o posiciona no centro da janela de visualização sem posicionamento feito por JS.

Rolagem e transbordamento

Defina overflow-y: auto no próprio diálogo para lidar com conteúdo longo. Defina overflow: hidden em body quando o modal abrir para impedir a rolagem do plano de fundo — adicione e remova uma classe com JavaScript para alternar esse comportamento.

Animação com CSS

Anime a entrada do diálogo usando @starting-style (Chrome 117+) para criar animações de entrada somente com CSS, sem JavaScript. Para obter suporte mais amplo, adicione uma classe open com JavaScript e use transition em transform e opacity: deslize para cima de translateY(20px) até translateY(0).

Desafio da animação de fechamento

Animar o fechamento de um diálogo é complicado — o diálogo é ocultado imediatamente ao chamar close(). Soluções: use a API de popover, que oferece suporte nativo a animações de fechamento, ou intercepte o fechamento com JavaScript, reproduza a classe da animação de saída e chame close() depois que a animação terminar.

Gerenciamento de z-index

Os diálogos são abertos acima de todo o conteúdo restante da página. Evite conflitos de z-index usando o contexto de empilhamento nativo do elemento de diálogo — ele é renderizado na camada superior, acima de todos os valores de z-index do CSS, sem exigir uma configuração de z-index no próprio diálogo.

Diálogo responsivo

Em dispositivos móveis, faça os diálogos deslizarem de baixo para cima como uma folha: dialog { margin: auto auto 0; width: 100%; border-radius: 16px 16px 0 0; max-height: 90vh; }. Em computadores, centralize-os como um modal tradicional usando o padrão margin: auto.

Gerenciamento do foco

O elemento de diálogo nativo move automaticamente o foco para o primeiro elemento focalizável dentro dele quando é aberto. Garanta uma ordem lógica de tabulação no diálogo. Adicione um botão de fechamento que devolva o foco ao elemento acionador quando o diálogo for fechado, para manter um fluxo adequado de navegação pelo teclado.

Atributos de acessibilidade

Adicione aria-labelledby apontando para o título do diálogo e aria-describedby apontando para a descrição do diálogo. O papel do diálogo é implícito para <dialog>. Os leitores de tela anunciam esses rótulos quando o foco entra no diálogo.

Padrão de diálogo de confirmação

Os diálogos de confirmação precisam de: um título com uma pergunta clara, uma breve descrição do impacto, um botão de ação destrutiva (vermelho, alinhado à direita) e um botão de cancelamento (alinhado à esquerda ou secundário). Use autofocus no botão de cancelamento para tornar a escolha segura a interação padrão do teclado.

Verificação de conhecimento

Qual é a vantagem de usar o elemento nativo <dialog> em vez de um modal personalizado baseado em div?

Resumo

O elemento de diálogo nativo, com ::backdrop, centralização por margin: auto, controle de transbordamento, animações CSS para a entrada e gerenciamento do foco, oferece um padrão de modal totalmente acessível e orientado por CSS. Disposições responsivas em forma de folha para dispositivos móveis e atributos ARIA adequados completam um componente de diálogo pronto para produção.

Grátis para começar

Aprenda CSS 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 “Estilização de modais e diálogos” é grátis?

Sim — o texto completo de “Estilização de modais e diálogos” é 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 “Estilização de modais e diálogos”?

Estilize elementos de diálogo HTML nativos e modais personalizados com plano de fundo, posicionamento e animações. 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 2 de 4.

Quanto tempo leva a aula “Estilização de modais e diálogos”?

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. Componente de cartão com propriedades personalizadas de CSS
  2. Estilização de modais e diálogos
  3. Padrões de menus suspensos e popovers
  4. Componente de abas com :checked versus JS
← Voltar para CSS Academy