Janelas pop-up são onipresentes online, mas não são de todo ruins. Aprenda a criar um pop-up bem-comportado com tecnologias padrão da Web.

Janelas pop-up bem projetadas tornam seu site mais interativo e moderno. Eles podem criar mercados e aumentar as vendas para as empresas.

Você pode criar janelas pop-up com HTML, CSS e JavaScript. Use o guia a seguir para criar e estilizar uma janela pop-up do zero. Isso torna seu site interativo e cria ótimas experiências de usuário.

Escreva HTML para estruturar o conteúdo

Vamos escrever algum código HTML que tenha uma janela modal oculta que aparece quando você clica em um botão. Nesse caso, você exibirá o significado da palavra Olá! A janela pop-up terá um título e algum conteúdo.

Imediatamente você ativa a janela modal, um efeito desfocado é lançado no fundo. Adicione classes às seções que você usará para selecionar o modal posteriormente em JavaScript.

<corpo>
<botãoaula="modal aberto">Olá!botão>

<divaula="modal-conteúdo oculto-modal">
<divaula="cabeçalho modal">
<h3>Significado de Olá!h3>
<botãoaula="modal fechado">×botão>
div>

<divaula="corpo modal">
<p>Hello é uma saudação em inglês. É usado em
o início de uma frase como uma introdução, seja pessoalmente ou
no telefone.p>
div>
div>

<divaula="blur-bg hidden-blur">div>
<roteiroorigem="script.js">roteiro>
corpo>

A página deve aparecer assim:

Você também pode querer investigar o elemento de diálogo HTML se você deseja usar a marcação mais semântica.

Escreva CSS para adicionar estilo

Use CSS para formatar a janela pop-up. Coloque a janela no centro da página da Web contra um fundo preto, para que fique bem visível. Você também estilizará a janela, seu plano de fundo e o tamanho da fonte.

Primeiro, crie um estilo uniforme para toda a página definindo a margem, o preenchimento e a altura da linha. Em seguida, alinhe os elementos do corpo no centro em um fundo traseiro.

* {
margem: 0;
preenchimento: 0;
dimensionamento de caixa: caixa de borda;
altura da linha: 1;
}

corpo {
altura: 100%;
mostrar: flex;
justificar-conteúdo: Centro;
direção flexível: coluna;
itens de alinhamento: Centro;
fundo: #000;
brecha: 30px;
}

Em seguida, estilize o modal aberto botão. Dê a ele uma cor de fundo diferente do restante da página para que se destaque. Além disso, defina a cor da fonte, tamanho, preenchimento e um tempo de transição.

.open-modal {
fundo: #20c997;
cor: #fff;
fronteira: nenhum;
preenchimento: 20px 40px;
tamanho da fonte: 48px;
raio da borda: 100px;
cursor: ponteiro;
transição: todos 00,3s;
contorno: nenhum;
}

.open-modal:ativo {
transformar: traduzirY(-17px);
}

Em seguida, estilize o conteúdo modal que será exibido quando a janela for aberta. Defina um plano de fundo branco, dê a ele uma largura menor que o corpo e adicione preenchimento.

Dê também um z-index, para que apareça na frente do modal aberto botão. Além disso, defina o modal oculto exibir como nenhum, então ele permanece oculto até você acioná-lo.

.modal-content {
fundo: #ccc;
largura: 500px;
preenchimento: 20px;
raio da borda: 10px;
índice z: 99;
}

.modal-header {
mostrar: flex;
justificar-conteúdo: espaço entre;
margem inferior: 16px;
cor: #000;
tamanho da fonte: 30px;
}

.modal-bodyp {
tamanho da fonte: 22px;
altura da linha: 1.5;
}

.hidden-modal {
mostrar: nenhum;
}

Em seguida, estilize o modal fechado botão com um fundo transparente e alinhe-o no centro.

.close-modal {
fundo: transparente;
fronteira: nenhum;
mostrar: flex;
itens de alinhamento: Centro;
justificar-conteúdo: Centro;
altura: 20px;
largura: 20px;
tamanho da fonte: 40px;
}

.close-modal:flutuar {
cor: #fa5252;
}

Por fim, estilize o elemento de desfoque que será lançado no plano de fundo quando a janela for aberta. Ele terá altura e largura máximas e um filtro de fundo. Defina o desfoque como nenhum, para que não fique visível até que a janela seja aberta.


.blur-bg {
posição: absoluto;
principal: 0;
esquerda: 0;
altura: 100%;
largura: 100%;
fundo: rgba(0, 0, 0, 0.3);
filtro de pano de fundo: borrão(5px);
}

.hidden-blur {
mostrar: nenhum;
}

Depois de adicionar o CSS, a página deve ficar assim:

Controle o pop-up com código JavaScript

Você usará JavaScript para abrir e fechar a janela modal exibindo-a ou ocultando-a. Adicionar ouvintes de eventos ao botão para acioná-lo para abrir e fechar quando você clicar nele.

Primeiro selecione os elementos relevantes usando as classes CSS que você definiu no HTML:

deixar modalContent = documento.querySelector(".modal-content");
deixar openModal = documento.querySelector(".open-modal");
deixar fecharModal = documento.querySelector(".close-modal");
deixar blurBg = documento.querySelector(".blur-bg");

Adicione um ouvinte de evento ao modal aberto botão para que ele abra a janela quando você clicar nele.

openModal.addEventListener("clique", função () {
modalContent.classList.remove("modal oculto");
blurBg.classList.remove("desfoque oculto");
});

Execute as ações opostas para lidar com o fechamento do pop-up, mas, desta vez, envolva-as em uma função nomeada. Isso manipulará o comportamento de vários eventos que podem fazer com que a janela modal seja fechada:

deixar closeModalFunction = função () {
modalContent.classList.add("modal oculto")
blurBg.classList.add("desfoque oculto")
}

Adicione ouvintes de eventos para lidar com cliques no plano de fundo ou no botão Fechar e no caso em que o usuário pressiona a tecla Escape.

blurBg.addEventListener("clique", closeModalFunction);
closeModal.addEventListener("clique", closeModalFunction);

documento.addEventListener("keydown", função (evento) {
se (evento.chave "Escapar"
&& !modalContent.classList.contains("escondido")
) {
closeModalFunction();
}
});

Agora, ao clicar no Olá! botão, o modal aparece. Você pode fechá-lo clicando no botão Cancelar à direita da janela. Veja o código em codepen.io e interagir com o modal:

Usos de janelas pop-up

O principal uso de janelas pop-up/modais no desenvolvimento da Web é trazer o foco para um item específico no site. Uma vez acionado, ele desativa o restante da página, solicitando que o usuário preste atenção nele.

Janelas pop-up animam sua IU. Eles podem alertar e chamar a atenção para informações importantes na página da web para seus usuários. Para remover a janela, o usuário deve executar algum tipo de ação. Desta forma o utilizador consegue interagir com a janela e obter a informação pretendida.