Creare un popup in HTML responsive e animato

Creare un popup in HTML responsive e animato

In questo tutorial vediamo come creare un popup in HTML animato, responsive e facilmente personalizzabile.

Gli ingredienti principali sono Javascript (jQuery), CSS e ovviamente HTML.

Per prima cosa è necessario creare un pulsante al cui clic associare l’apertura del popup. Qualora aveste già tale elemento potete passare al punto 2.

Crea il pulsante per aprire il popup

<div class="popup-me">APRI POPUP</div>

Bene, ora passiamo alla parte divertente: generare e aprire il nostro popup, servendoci di jQuery.

Creiamo una funzione che chiameremo pop_init() 

Genera il popup

function pop_init( my_content ) {

	var pop_height = "25%";
	var pop_html = "<div class="pop-bg"></div><div class="pop-wrap"><p class="pop-x">X</p><div class="pop-content"></div></div>";

	$("body").prepend( pop_html );

	$(".pop-wrap").animate({ "height" : pop_height }, 250).click(function(event){
		event.stopPropagation();
	});

	$(".pop-bg, .pop-x").bind("click", function() {
		pop_close();
	});

	$(".pop-content").text(my_content);

}

Nella funzione iniziamo col definire due variabili: pop_height relativa all’altezza del popup, pop_html contenente il codice HTML necessario per creare fisicamente l’elemento.

Con prepend() inseriamo il contenuto della variabile pop_html appena dopo il tag body.

Utilizziamo animate() per dare un pizzico di movimento e animare l’apertura del popup in altezza (quella definita in pop_height) e con event.stopPropagation(); facciamo in modo che cliccando sopra il popup, quest’ultimo non si chiuda.

Vogliamo però che il popup si chiuda cliccando sullo sfondo oppure sul tasto X chiudi, quindi, al clic su questi elementi richiamiamo la funzione pop_close().

Per completare la funzione, tramite text() inseriamo il contenuto testuale passato come argomento della funzione.

Gestisci la chiusura del popup

function pop_close() {
	$(".pop-bg, .pop-wrap").remove();
	$("body").unbind("click");
}

Ora dobbiamo legare la funzione che genera il popup all’evento del clic sul pulsante APRI POPUP. Ci servirà la classe che abbiamo assegnato al pulsante (vedi punto 1).

Gestisci l’apertura del popup

$(document).ready(function() {

	$(".popup-me").click(function(){

		pop_init( "Questo è solo un esempio di popup!" );

	});

});

Ci siamo quasi, tutto quello che manca è assegnare gli stili CSS alle classi create finora.

Aggiungi gli stili

.pop-bg {
	position: fixed;
	top: 0;
	left: 0;
	overflow: hidden;
	z-index: 9998;
	width: 100%;
	height: 100%;
	background-color: rgba(0,0,0,0.7);
}

.pop-wrap {
	position: fixed;
	z-index: 9999;
	width: 80%;
	top: 50%;
	left: 50%;
	-webkit-transform: translate(-50%, -50%);
	-moz-transform: translate(-50%, -50%);
	-o-transform: translate(-50%, -50%);
	-ms-transform: translate(-50%, -50%);
	transform: translate(-50%, -50%);
	background-color: #f7f7f7;
	-webkit-box-shadow: 0px 0px 18px 0px rgba(0,0,0,1);
	-moz-box-shadow: 0px 0px 18px 0px rgba(0,0,0,1);
	box-shadow: 0px 0px 18px 0px rgba(0,0,0,1);
}

.pop-x {
	font-family: fantasy;
	position: absolute;
	top: 0;
	right: 0;
	padding: 10px 15px;
	font-size: 30px;
	font-weight: 100;
	line-height: 25px;
	color: #f7f7f7;
	background: red;
	cursor: pointer;
	z-index: 999;
}

.pop-content {
	clear: both;
	padding: 2.5rem;
	font-family: fantasy;
	text-align: center;
	font-size: 18px;
}

La classe pop-bg è un overlay scuro di fondo in posizione fissa che occupa tutto lo spazio della finestra del browser e che permette di oscurare leggermente i contenuti della pagina staccandoli dal nostro popup.

La classe pop-wrap è il nostro elemento popup, centrato nella pagina e fisso.

pop-x è il pulsante posizionato nell’angolo in alto a sinistra del popup e che ne consente la chiusura.

Infine pop-content è l’elemento in cui inseriamo il messaggio o comunque il contenuto che vogliamo far visualizzare all’interno del popup.

Conclusione

In 4 semplici passi abbiamo creato un popup responsive e animato. A questo punto possiamo personalizzarlo nel modo che preferiamo modificandone gli stili, l’animazione e il messaggio.

Nel prossimo articolo vedremo come gestire in modo dinamico il contenuto del popup, grazie ad AJAX.