Ventana modal minimalista con vanilla JavaScript

Tiempo de ejecución: 30 minutos. Empezar

Autor: despreston
Views Total: 1,865
Sitio oficial: Ir a la web
Actualizado: April 2, 2015
Licencia: MIT

Vista prévia

Ventana modal minimalista con vanilla JavaScript

Descripción

Una biblioteca de JavaScript Pure Vanilla para crear ventanas modales que usan CSS3 para animaciones modales de apertura/cierre.

Funcionamiento

Descargue y coloque el modal. js en su proyecto.

<script src='modal.js'></script>

Cree un botón de alternancia para iniciar una ventana modal.

<button id="launchModalButton" type="button">Launch Modal</button>

Inicializar la ventana modal con contenido personalizado.

var myModal = new Modal({

content: 'Modal Content'

// More settings here
});

var launchModal = document.getElementById('launchModalButton');

launchModal.addEventListener('click', function() {

myModal.open();
});

Los estilos CSS básicos para la ventana modal.

.des-overlay {

position: fixed;

z-index: 9998;

top: 0;

left: 0;

opacity: 0;

width: 100%;

height: 100%;

-webkit-transition: 1ms opacity ease;

-moz-transition: 1ms opacity ease;

-ms-transition: 1ms opacity ease;

-o-transition: 1ms opacity ease;

transition: 1ms opacity ease;

background: rgba(0,0,0,.6);
}

.des-modal {

position: absolute;

z-index: 9999;

top: 50%;

left: 50%;

opacity: 0;

width: 94%;

padding: 24px 20px;

-webkit-transition: 1ms opacity ease;

-moz-transition: 1ms opacity ease;

-ms-transition: 1ms opacity ease;

-o-transition: 1ms opacity ease;

transition: 1ms opacity ease;

-webkit-transform: translate(-50%, -50%);

-moz-transform: translate(-50%, -50%);

-ms-transform: translate(-50%, -50%);

-o-transform: translate(-50%, -50%);

transform: translate(-50%, -50%);

border-radius: 2px;

background: #fff;
}

.des-modal.des-open.des-anchored {

top: 20px;

-webkit-transform: translate(-50%, 0);

-moz-transform: translate(-50%, 0);

-ms-transform: translate(-50%, 0);

-o-transform: translate(-50%, 0);

transform: translate(-50%, 0);
}

.des-modal.des-open { opacity: 1; }

.des-overlay.des-open { opacity: 1; }

.des-close {

font-family: Helvetica, Arial, sans-serif;

font-size: 24px;

font-weight: 700;

line-height: 12px;

position: absolute;

top: 5px;

right: 5px;

padding: 5px 7px 7px;

cursor: pointer;

color: #fff;

border: 0;

outline: none;

background: #e74c3c;
}

.des-close:hover { background: #c0392b; }

Agregue animaciones personalizadas a la ventana modal mediante CSS3.

.des-overlay.fade-and-drop {

display: block;

opacity: 0;
}

.des-modal.fade-and-drop {

top: -300%;

opacity: 1;

display: block;
}

.des-modal.fade-and-drop.des-open {

top: 50%;

-webkit-transition: 500ms top 500ms ease;

-moz-transition: 500ms top 500ms ease;

-ms-transition: 500ms top 500ms ease;

-o-transition: 500ms top 500ms ease;

transition: 500ms top 500ms ease;
}

.des-modal.fade-and-drop.des-open.des-anchored {

-webkit-transition: 500ms top 500ms ease;

-moz-transition: 500ms top 500ms ease;

-ms-transition: 500ms top 500ms ease;

-o-transition: 500ms top 500ms ease;

transition: 500ms top 500ms ease;
}

.des-overlay.fade-and-drop.des-open {

top: 0;

-webkit-transition: 500ms opacity ease;

-moz-transition: 500ms opacity ease;

-ms-transition: 500ms opacity ease;

-o-transition: 500ms opacity ease;

transition: 500ms opacity ease;

opacity: 1;
}

.des-modal.fade-and-drop {

-webkit-transition: 500ms top ease;

-moz-transition: 500ms top ease;

-ms-transition: 500ms top ease;

-o-transition: 500ms top ease;

transition: 500ms top ease;
}

.des-overlay.fade-and-drop {

-webkit-transition: 500ms opacity 500ms ease;

-moz-transition: 500ms opacity 500ms ease;

-ms-transition: 500ms opacity 500ms ease;

-o-transition: 500ms opacity 500ms ease;

transition: 500ms opacity 500ms ease;
}

Configuración predeterminada.

// addional CSS class for the modal
className: 'fade-and-drop',

// display close button
closeButton: true,

// custom modal content
content: "",

// max/min width of the modal window
maxWidth: 600,
minWidth: 280,

// display a fullscreen overlay
overlay: true

Te puede interesar: