O que você vai aprender?
Nesta aula vamos construir o conceito de Modal desde o início. Você não vai apenas copiar um código pronto. A ideia é entender por que cada parte existe e qual é a responsabilidade do HTML, do CSS e do JavaScript.
Ao final da aula você será capaz de criar modais para mensagens, confirmações, formulários, detalhes de registros e outras situações comuns em sistemas web.
Progresso da aula
O que é uma janela modal?
Entendendo o conceito antes de escrever código.
Um modal é uma interface que aparece sobre o conteúdo atual da página para apresentar uma informação ou solicitar uma ação.
Quando o modal aparece, normalmente existe uma camada visual entre o usuário e o restante da página. Essa camada é chamada frequentemente de overlay ou fundo de sobreposição.
Sobre esse fundo fica a janela do modal, que contém título, informações, campos de formulário, botões ou outras informações.
O usuário pode navegar normalmente pelo conteúdo.
Uma janela aparece em primeiro plano e chama a atenção para uma tarefa específica.
| Elemento | Responsabilidade |
|---|---|
| HTML | Cria a estrutura da janela. |
| CSS | Define posição, tamanho, cores, fundo e aparência. |
| JavaScript | Controla quando o modal abre e fecha. |
Estrutura HTML de um Modal
Criando a estrutura que será transformada em janela.
O HTML não sabe sozinho que determinado elemento é um "modal". Nós criamos uma estrutura utilizando elementos HTML e depois usamos CSS e JavaScript para dar comportamento a essa estrutura.
Uma estrutura simples pode possuir uma camada externa e uma camada interna.
<div class="modal">
<div class="modal-conteudo">
<h2>Título do Modal</h2>
<p>
Conteúdo da janela.
</p>
<button>
Fechar
</button>
</div>
</div>
🔎 Vamos entender cada camada
O primeiro
div
representa a área externa. É nela que podemos colocar o fundo escuro
que cobre a página.
O segundo
div
representa a janela que contém o conteúdo.
Cobre a tela e cria o efeito de sobreposição.
Contém o conteúdo que será apresentado ao usuário.
Botões podem permitir fechar, cancelar, salvar ou confirmar.
Janela Modal
Esta caixa representa o conteúdo interno do modal.
Como colocar o Modal sobre a página?
Entendendo position, fixed, inset e z-index.
Agora temos a estrutura HTML. Mas ainda não temos uma janela sobreposta. Precisamos utilizar CSS para transformar a estrutura em uma camada que ocupa a tela.
1. position: fixed
A propriedade position: fixed permite posicionar um elemento em relação à janela do navegador.
.modal {
position: fixed;
inset: 0;
}
2. O que significa inset: 0?
A propriedade inset pode ser utilizada para definir simultaneamente as posições superior, direita, inferior e esquerda.
Portanto:
inset: 0;
3. Fundo escuro
Um modal normalmente possui um fundo escurecido para separar visualmente a janela do restante da página.
background: rgba(0, 0, 0, 0.65);
4. Centralizando a janela
Podemos utilizar Flexbox para colocar o conteúdo exatamente no centro da tela.
display: flex;
align-items: center;
justify-content: center;
A importância do z-index
Fazendo o modal aparecer acima dos outros elementos.
Em uma página real podemos ter menus, imagens, cards, cabeçalhos e outros elementos. O modal precisa aparecer em uma camada superior.
Para isso podemos utilizar z-index.
.modal {
position: fixed;
inset: 0;
z-index: 9999;
}
Abrindo e fechando o Modal
Agora vamos dar comportamento à interface.
Até aqui trabalhamos principalmente com estrutura e aparência. Agora entra o JavaScript.
O JavaScript será responsável por dizer:
- quando o modal deve aparecer;
- quando deve desaparecer;
- o que acontece quando o usuário clica;
- o que acontece quando pressiona ESC;
- como validar informações antes de confirmar uma ação.
const modal =
document.getElementById("modal");
function abrirModal() {
modal.classList.add("aberto");
}
function fecharModal() {
modal.classList.remove("aberto");
}
Formas de fechar um Modal
Uma boa interface oferece caminhos claros para sair da janela.
Botão X
Permite que o usuário feche a janela diretamente.
Clique fora
O usuário pode clicar no overlay para fechar.
Tecla ESC
Uma forma rápida e comum de fechar o modal.
Botão Cancelar
Muito utilizado em formulários e confirmações.
modal.addEventListener("click", function(event) {
if (event.target === modal) {
fecharModal();
}
});
document.addEventListener("keydown", function(event) {
if (event.key === "Escape") {
fecharModal();
}
});
Demonstrações práticas
Agora vamos utilizar modais funcionando de verdade.
Chegou a hora de observar o conceito funcionando. Clique nos botões abaixo e perceba como cada modal possui uma finalidade diferente.
Modal de confirmação
Utilizando modal para evitar ações acidentais.
Imagine um sistema de cadastro. O usuário clica em Excluir.
Se o sistema excluir imediatamente o registro, um clique acidental poderá causar perda de informação.
O modal pode interromper temporariamente o fluxo e perguntar:
Deseja realmente excluir este registro?
O usuário precisa tomar uma decisão antes que a operação seja executada.
1. Usuário clica em "Excluir"
2. Sistema abre o modal
3. Usuário analisa a mensagem
4. Usuário escolhe:
Cancelar
ou
Confirmar
5. Sistema executa a ação somente
depois da confirmação.
Modal com formulário
Criando uma interface de cadastro dentro da janela.
Outra utilização muito comum de modais é apresentar pequenos formulários sem levar o usuário para outra página.
Isso pode ser útil para:
- cadastrar um aluno;
- adicionar um produto;
- editar um registro;
- enviar uma mensagem;
- alterar informações.
<form>
<label for="nome">
Nome
</label>
<input
type="text"
id="nome"
required
>
<button type="submit">
Salvar
</button>
</form>
Como criar um bom Modal?
Não basta funcionar: a interface precisa ser clara.
Seja objetivo
O usuário deve entender rapidamente o motivo da janela.
Evite excesso
Não transforme o modal em uma página inteira sem necessidade.
Botões claros
Use textos que expliquem claramente cada ação.
Pense no celular
A janela precisa funcionar em diferentes tamanhos de tela.
Entendendo o estado do Modal
Aberto e fechado são estados diferentes da interface.
Uma forma simples de compreender um modal é pensar que ele possui dois estados principais:
.modal {
display: none;
}
.modal.aberto {
display: flex;
}
O JavaScript pode simplesmente adicionar ou remover a classe aberto.
Isso mantém uma separação interessante: CSS decide como o estado aparece e JavaScript decide quando o estado muda.
Pensando em todos os usuários
Uma interface profissional também precisa considerar acessibilidade.
Um modal não deve ser pensado apenas visualmente. Usuários podem utilizar teclado, leitores de tela ou dispositivos diferentes.
Por isso é importante oferecer maneiras claras de fechar a janela e utilizar elementos semânticos e identificáveis.
Construa seu próprio Modal
Agora é sua vez. Crie uma pequena aplicação que utilize um modal para resolver uma situação real.
- Modal de cadastro.
- Modal de login.
- Modal de confirmação.
- Modal de detalhes.
- Modal de imagem.
- Modal de mensagem.
Modal integrado ao sistema
Desenvolva uma pequena interface de gerenciamento onde o usuário possa cadastrar, visualizar, editar e excluir informações utilizando janelas modais.
Exercícios de fixação
Verifique se os principais conceitos foram compreendidos.
Questão 01
O que é um modal?
A) Um banco de dados
B) Uma janela que aparece sobre o conteúdo da página
C) Um servidor web
D) Uma linguagem de programação
Questão 02
Qual tecnologia é responsável principalmente pela estrutura do modal?
A) HTML
B) CSS
C) JavaScript
D) SQL
Questão 03
Qual tecnologia controla o comportamento de abertura e fechamento?
A) HTML
B) CSS
C) JavaScript
D) MySQL
Questão 04
Para que serve o position: fixed no modal?
A) Alterar a cor
B) Fixar o elemento em relação à janela
C) Alterar o tamanho da fonte
D) Criar banco de dados
Questão 05
Qual propriedade pode ajudar a colocar o modal acima de outros elementos?
A) color
B) font-size
C) z-index
D) border
Questão 06
Qual evento JavaScript podemos utilizar para detectar uma tecla pressionada?
A) keydown
B) mousecolor
C) clicktext
D) buttonpress
Questão 07
Qual tecla é frequentemente utilizada para fechar um modal?
A) TAB
B) SHIFT
C) ESC
D) CTRL
Questão 08
Por que um modal de confirmação pode ser útil antes de excluir um registro?
A) Para deixar a página mais pesada
B) Para impedir qualquer ação do usuário
C) Para reduzir a possibilidade de uma ação acidental
D) Para criar uma tabela
📌 Resumo da aula
Você chegou ao final da aula!
Agora você conhece a estrutura de uma janela modal, entende o papel do HTML, CSS e JavaScript e consegue construir diferentes tipos de modais.
O próximo passo é aplicar esse conhecimento em um projeto real.