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