| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- /*=========================================
- * animatedModal.js: Version 1.0
- * author: João Pereira
- * website: https://joaopereira.pt
- * email: joaopereirawd@gmail.com
- * Licensed MIT
- =========================================*/
- (function ($) {
-
- $.fn.animatedModal = function(options) {
- var modal = $(this);
-
- //Defaults
- var settings = $.extend({
- modalTarget: modal.attr('href').replace('#',''),
- position:'fixed',
- width:'100%',
- height:'100%',
- top:'0px',
- left:'0px',
- zIndexIn: '9999',
- zIndexOut: '-9999',
- color: '#39BEB9',
- opacityIn:'1',
- opacityOut:'0',
- animatedIn:'zoomIn',
- animatedOut:'zoomOut',
- animationDuration:'.6s',
- overflow:'auto',
- // Callbacks
- beforeOpen: function() {},
- afterOpen: function() {},
- beforeClose: function() {},
- afterClose: function() {}
-
-
- }, options);
-
- var closeBt = $('.close-'+settings.modalTarget);
- //console.log(closeBt)
- var href = $(modal).attr('href'),
- id = $('body').find('#'+settings.modalTarget),
- idConc = '#'+id.attr('id');
- //console.log(idConc);
- // Default Classes
- id.addClass('animated');
- id.addClass(settings.modalTarget+'-off');
- //Init styles
- var initStyles = {
- 'position':settings.position,
- 'width':settings.width,
- 'height':settings.height,
- 'top':settings.top,
- 'left':settings.left,
- 'background-color':settings.color,
- 'overflow-y':settings.overflow,
- 'z-index':settings.zIndexOut,
- 'opacity':settings.opacityOut,
- '-webkit-animation-duration':settings.animationDuration,
- '-moz-animation-duration':settings.animationDuration,
- '-ms-animation-duration':settings.animationDuration,
- 'animation-duration':settings.animationDuration
- };
- //Apply stles
- id.css(initStyles);
- modal.click(function(event) {
- event.preventDefault();
- $('body, html').css({'overflow':'hidden'});
- if (href == idConc) {
- if (id.hasClass(settings.modalTarget+'-off')) {
- id.removeClass(settings.animatedOut);
- id.removeClass(settings.modalTarget+'-off');
- id.addClass(settings.modalTarget+'-on');
- }
- if (id.hasClass(settings.modalTarget+'-on')) {
- settings.beforeOpen();
- id.css({'opacity':settings.opacityIn,'z-index':settings.zIndexIn});
- id.addClass(settings.animatedIn);
- id.one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', afterOpen);
- };
- }
- });
- closeBt.click(function(event) {
- event.preventDefault();
- $('body, html').css({'overflow':'auto'});
- settings.beforeClose(); //beforeClose
- if (id.hasClass(settings.modalTarget+'-on')) {
- id.removeClass(settings.modalTarget+'-on');
- id.addClass(settings.modalTarget+'-off');
- }
- if (id.hasClass(settings.modalTarget+'-off')) {
- id.removeClass(settings.animatedIn);
- id.addClass(settings.animatedOut);
- id.one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', afterClose);
- };
- });
- function afterClose () {
- id.css({'z-index':settings.zIndexOut});
- settings.afterClose(); //afterClose
- }
- function afterOpen () {
- settings.afterOpen(); //afterOpen
- }
- }; // End animatedModal.js
- }(jQuery));
-
|