Criar um modal simples que aparece e fecha ao clicar no botão.
Dia 6 do projeto 30 dias com js
Olá, galera! Hoje é o penúltimo dia da primeira semana, ou seja, o dia 6 do desafio. O tema de hoje foi criar um modal simples que aparece e fecha ao clicar no botão. Para variar um pouco, fiz de duas maneiras diferentes. Então, vamos começar pelo HTML!
Estrutura HTML
No HTML, criei dois botões: um para abrir o primeiro modal e outro para a segunda abordagem. Além disso, também adicionei o corpo do primeiro modal, que contém um elemento de texto e um botão para fechá-lo
Estilização com CSS
No CSS, configurei o primeiro modal para cobrir toda a tela, mas com display: none
, para que ele não apareça inicialmente.
Implementação com JavaScript
Primeiro Modal
O JavaScript para o primeiro modal é bem simples:
1
2
3
4
5
6
7
8
9
let modal = document.getElementById("modal").style;
function Modal() {
modal.display = "flex";
}
function CloseModal() {
modal.display = "none";
}
Aqui, apenas manipulei o estilo do modal, criando funções para exibi-lo e escondê-lo.
Segundo Modal
No segundo modal, optei por criá-lo dinamicamente dentro do JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function CreateModal(title, description) {
const modal = document.createElement("div");
const modalContent = document.createElement("div");
const modalHeader = document.createElement("div");
const modalBody = document.createElement("div");
const closeButton = document.createElement("button");
modal.classList.add("modal");
modalContent.classList.add("modal-content");
modalHeader.classList.add("modal-header");
modalHeader.innerHTML = `<h1>${title}</h1>`;
modalBody.innerHTML = `<p>${description}</p>`;
closeButton.innerHTML = "x";
closeButton.addEventListener("click", () => {
document.body.removeChild(modal);
});
modalHeader.appendChild(closeButton);
modalContent.appendChild(modalHeader);
modalContent.appendChild(modalBody);
modal.appendChild(modalContent);
document.body.appendChild(modal);
}
Aqui, criei os elementos HTML via JavaScript, adicionei classes, conteúdo e estrutura. Diferente do primeiro modal, este não utiliza display: none
, pois o próprio elemento é removido ao clicar no botão de fechar.
O resultado final você pode conferir aqui
link para o repositorio do projeto