Como fechar um modal corretamente

Feche modais com clareza, preserve dados e devolva o foco ao elemento que abriu o diálogo.

Wireframe minimalista de uma modal com botão de fechar e retorno do foco ao elemento acionador.
Nível de impácto
Alto
Status
Recomendado
Nível de evidênica
Forte evidência

Contexto

Fechar uma modal não é apenas remover uma camada visual. A pessoa precisa saber qual ação encerra o diálogo, o que acontece com os dados e para onde o foco retorna.

Ofereça um botão de fechar visível e nomeado. Use “Cancelar” quando a tarefa puder ser abandonada e uma ação primária com verbo específico.

Ao fechar, remova o bloqueio do fundo e devolva o foco ao elemento que abriu a modal. Se houver dados não salvos, explique o efeito de fechar e confirme antes de descartá-los.

Ilustração do Carbon Design System mostrando o foco de teclado circulando dentro de uma modal e retornando ao botão de fechar.
Exemplo real: o Carbon Design System mostra o foco de teclado circulando dentro da modal e retornando ao botão X. A ilustração relaciona diretamente o fechamento ao controle do foco. Fonte: Carbon Design System — Modal: Accessibility — https://carbondesignsystem.com/components/modal/accessibility/

Porque isso importa?

Sem uma saída clara, a pessoa pode ficar presa, perder dados ou não entender se a tarefa foi concluída. O retorno do foco preserva a orientação para quem usa teclado ou leitor de tela.

Um “X” sem nome acessível ou um botão “OK” ambíguo não informa o resultado da ação. Fechar, cancelar, salvar e descartar são ações diferentes.

  • Quando a modal tiver uma saída visível e compreensível.
  • Quando “Fechar”, “Cancelar” e “Salvar” produzirem efeitos diferentes.
  • Quando Escape puder encerrar a modal sem ambiguidade.
  • Quando dados não salvos forem preservados ou confirmados antes do descarte.
  • Quando o foco puder retornar ao elemento que abriu a modal.
  • Quando o único fechamento for um X sem nome acessível.
  • Quando fechar descartar dados silenciosamente.
  • Quando “Sim”, “Não” ou “OK” esconderem o efeito da ação.
  • Quando Escape puder apagar trabalho sem confirmação.
  • Quando a modal não devolver o foco ao contexto anterior.
Captura do Padrão Digital de Governo mostrando uma modal sobreposta com botão X de fechar.
Exemplo real: o Padrão Digital de Governo mostra uma modal sobreposta com botão X de fechar visível. A captura complementa o exemplo de foco ao evidenciar uma saída identificável no próprio diálogo. Fonte: Padrão Digital de Governo — Modal: https://www.gov.br/ds/components/modal?tab=designer

Recomendações

Faça

Práticas recomendadas
  • Nomeie o botão de fechar.
  • Mostre uma saída visível.
  • Diferencie fechar, cancelar e salvar.
  • Confirme o descarte de dados.
  • Permita Escape quando apropriado.
  • Retorne o foco ao acionador.
Exemplo correto de modal: botão de fechar visível, ações distintas e indicação de retorno do foco ao acionador.
Exemplo correto: a modal é curta, tem botão X visível com foco, ações distintas e indicação de retorno ao elemento que abriu o diálogo.

Evite

Práticas a evitar
  • Não use X sem nome.
  • Não descarte dados silenciosamente.
  • Não confunda fechar e salvar.
  • Não use “Sim” e “Não” isolados.
  • Não deixe o foco escapar.
  • Não perca o contexto.
Exemplo incorreto de modal: fluxo longo, rolagem e saída ambígua sem retorno claro do foco.
Exemplo incorreto: a modal ocupa quase toda a tela, contém um fluxo longo, exige rolagem e apresenta uma saída ambígua, dificultando o fechamento e a preservação do contexto.

Acessibilidade

Use role="dialog", associe o título via aria-labelledby e use aria-modal="true" somente quando o conteúdo ao fundo estiver realmente inativo.

Ao abrir, leve o foco ao controle adequado; mantenha Tab e Shift+Tab dentro da modal; permita Escape quando apropriado e devolva o foco ao acionador após fechar. Um botão apenas com ícone precisa de nome acessível, como aria-label="Fechar".

Garanta foco visível, ordem previsível e teste com teclado, zoom e leitor de tela.

Checklist

  • Existe um botão de fechar visível?
  • O botão tem nome acessível?
  • Fechar, cancelar e salvar têm efeitos distintos?
  • Escape fecha quando apropriado?
  • O foco permanece dentro da modal?
  • O foco retorna ao acionador?
  • Dados não salvos são preservados ou confirmados?
  • O fundo deixa de estar bloqueado?
  • O comportamento foi testado com teclado e leitor de tela?

Referências

  • W3C — ARIA Authoring Practices Guide: Dialog (Modal) Pattern. Orienta foco inicial, contenção do foco, Escape, retorno ao acionador e nome acessível. Consultar o padrão.
  • Carbon Design System — Modal: Accessibility. Explica foco inicial, ciclo de Tab, Escape e uso do botão X no fechamento. Consultar acessibilidade.
  • Carbon Design System — Modal: Usage. Diferencia o fechamento de modais passivas e transacionais e orienta o comportamento de X, Cancelar e Escape. Consultar uso.
  • Padrão Digital de Governo — Modal. Apresenta modais de alerta, entrada e seleção com ações distintas e delimitadas. Consultar o componente.
  • U.S. Web Design System — Modal. Documenta o componente modal e seus comportamentos de interação. Consultar o componente.
  • AMAWeb — UNIFESP. O checklist e o manual apoiam a verificação de teclado, foco, identificação e compreensão da interface. Consultar o checklist e o manual.
Veja também

Esta recomendação foi útil para você?