JSFiddle - React, Tailwind, and code Playground
by Jesse M
HTML
<a href="#" id="pop">link</a>
CSS
.avgrund-popin {
position: absolute;
background: #fff;
padding: 10px;
overflow: hidden;
visibility: hidden;
opacity: 0;
filter: alpha(opacity=0);
top: 50%;
left: 50%;
z-index: 1000;
box-shadow: 0 1px 10px 0 rgba(0, 0, 0, .5);
-webkit-transform: scale(0.8);
-moz-transform: scale(0.8);
-ms-transform: scale(0.8);
-o-transform: scale(0.8);
transform: scale(0.8);
}
.avgrund-overlay {
background: #000;
width: 100%;
position: relative;
top: -1500px;
left: 0;
z-index: 101;
visibility: hidden;
opacity: 0;
filter: alpha(opacity=0);
}
body.avgrund-ready,
.avgrund-ready .avgrund-popin,
.avgrund-ready .avgrund-overlay {
-webkit-transform-origin: 50% 50%;
-moz-transform-origin: 50% 50%;
-ms-transform-origin: 50% 50%;
-o-transform-origin: 50% 50%;
transform-origin: 50% 50%;
-webkit-transition: 0.3s all ease-out;
-moz-transition: 0.3s all ease-out;
-ms-transition: 0.3s all ease-out;
-o-transition: 0.3s all ease-out;
transition: 0.3s all ease-out;
}
body.avgrund-active {
-webkit-transform: scale(0.9);
-moz-transform: scale(0.9);
-ms-transform: scale(0.9);
-o-transform: scale(0.9);
transform: scale(0.9);
overflow: hidden;
}
.avgrund-active .avgrund-popin {
visibility: visible;
opacity: 1;
filter: alpha(opacity=100);
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1);
}
.avgrund-active .avgrund-overlay {
visibility: visible;
opacity: .5;
filter: alpha(opacity=50);
height: 20000px;
}
.avgrund-popin.stack {
-webkit-transform: scale(1.5);
-moz-transform: scale(1.5);
-ms-transform: scale(1.5);
-o-transform: scale(1.5);
transform: scale(1.5);
}
.avgrund-active .avgrund-popin.stack {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1);
}
.avgrund-active .avgrund-blur {
-webkit-filter: blur(1px);
-moz-filter: blur(1px);
-ms-filter:...
JavaScript
/**
* jQuery Avgrund Popin Plugin
* http://github.com/voronianski/jquery.avgrund.js/
*
* (c) 2012-2013 http://pixelhunter.me/
* MIT licensed
*/
(function (factory) {
if (typeof define === 'function' && define.amd) {
// AMD
define(['jquery'], factory);
} else if (typeof exports === 'object') {
// CommonJS
module.exports = factory;
} else {
// Browser globals
factory(jQuery);
}
}(function ($) {
$.fn.avgrund = function (options) {
var defaults = {
width: 380, // max = 640
height: 280, // max = 350
showClose: false,
showCloseText: '',
closeByEscape: true,
closeByDocument: true,
holderClass: '',
overlayClass: '',
enableStackAnimation: false,
onBlurContainer: '',
openOnEvent: true,
setEvent: 'click',
onLoad: false,
onUnload: false,
template: '<p>This is test popin content!</p>'
};
options = $.extend(defaults, options);
return this.each(function() {
var self = $(this),
body = $('body'),
maxWidth = options.width > 640 ? 640 : options.width,
maxHeight = options.height > 350 ? 350 : options.height,
template = typeof options.template === 'function' ?
options.template(self) :
options.template instanceof jQuery ?
options.template.html() :
options.template;
body.addClass('avgrund-ready');
if ($('.avgrund-overlay').length === 0) {
body.append('<div class="avgrund-overlay ' + options.overlayClass + '"></div>');
}
if (options.onBlurContainer !== '') {
$(options.onBlurContainer).addClass('avgrund-blur');
}
function onDocumentKeyup (e) {
if (options.closeByEscape) {
if (e.keyCode === 27) {
deactivate();
}
}
}
function onDocumentClick (e) {
if (options.closeByDocument) {
if ($(e.target).is('.avgrund-overlay, .avgrund-close')) {
e.preventDefault();
deactivate();
}
} else if ($(e.target).is('.avgrund-close'))...