var ModalEffects = (function() {
function init() {
var overlay = document.querySelector( '.md-overlay' );
[].slice.call( document.querySelectorAll( '.md-trigger' ) ).forEach( function( el, i ) {
var modal = document.querySelector( '#' + el.getAttribute( 'data-modal' ) ),
close = modal.querySelector( '.md-close' );
function removeModal( hasPerspective ) {
classie.remove( modal, 'md-show' );
var scrollTop = parseInt($('html').css('top'));
$('html').removeClass('noscroll').css('top','');
$('html,body').scrollTop(-scrollTop);
if( hasPerspective ) {
classie.remove( document.documentElement, 'md-perspective' );
}
}
function removeModalHandler() {
removeModal( classie.has( el, 'md-setperspective' ) );
}
el.addEventListener( 'click', function( ev ) {
classie.add( modal, 'md-show' );
if ($(document).height() > $(window).height()) {
var scrollTop = ($('html').scrollTop()) ? $('html').scrollTop() : $('body').scrollTop(); // Works for Chrome, Firefox, IE...
if (scrollTop < 0) { scrollTop = 0; }
$('html').addClass('noscroll').css('top',-scrollTop);
}
overlay.removeEventListener( 'click', removeModalHandler );
overlay.addEventListener( 'click', removeModalHandler );
if( classie.has( el, 'md-setperspective' ) ) {
setTimeout( function() {
classie.add( document.documentElement, 'md-perspective' );
}, 25 );
}
});
close.addEventListener( 'click', function( ev ) {
ev.stopPropagation();
removeModalHandler();
});
} );
}
init();
})();html.noscroll {
position: fixed;
overflow-y: scroll;
width: 100%;
}<div class="md-modal md-effect-16" id="modal-16">
<div class="md-content">
<div>
...
<button class="md-close">close</button>
</div>
</div>
</div>
<div class="modcontainer"> <!-- the overlay -->
<button class="md-trigger" data-modal="modal-16">open</button>
</div>
برچسب:
نویسنده: آیلین رضوانی