anavdesign
4/22/2016 - 3:33 AM

JS: Simple Modal

JS: Simple Modal

/*
 * Simple Modal
 */
 
/***********************************************************
 ***********************************************************

 Markup 1 Inline Element:

 <p><a class="simple-modal-btn" href="#modal1">Modal 1</a></p>

 <div id="modal1" class="simple-modal">
     <h2>Modal 1</h2>
     <div>Lorem ipsum dolor sit amet...</div>
 </div>
 
 Markup 2 iFrame/Video:

 <button class="simple-modal-btn" data-target="#modal2">iFrame</button>
 
 <div id="modal2" class="simple-modal">
    <iframe src="#"></iframe>
 </div>

 Usage
 $('.simple-modal-btn').simpleModal();

 ***********************************************************
 ***********************************************************/

(function ($) {
 
    $.fn.simpleModal = function(options) {

        // Default options.
        var settings = $.extend({
            modalFade: 400
        }, options );

        var modalOpen = 'js-modal-open';

        $('.simple-modal')
            // Add CLose Button
            .append('<span class=js-simple-modal-close>close</span>')
            // Add Wrapper for Responsive Media
            .children('iframe, video').wrap('<div class=js-simple-modal-media />').end()
            // Add Wrapper
            .wrapInner('<div class=js-simple-modal><div class=js-simple-modal-wrapper><div class=js-simple-modal-content/></div></div>')
            // Append Overlay
            .append('<span class=js-simple-modal-overlay />')
            // Hide on load
            .hide();

        // Click
        this.click(function(event){

            // Stop Links
            event.preventDefault();

            // Check attribute type
            if ($(this).is('[href]')){
                var modalSource = $(this).attr('href');
            } else if ($(this).is('[data-target]')){
                var modalSource = $(this).attr('data-target');
            }

            // Target Modal Content
            $(modalSource).fadeIn(settings.modalFade).addClass(modalOpen);
        });

        // Close Modal Window
        $('.js-simple-modal-overlay, .js-simple-modal-close').click(function() {
            $(this).closest('.simple-modal').fadeOut(settings.modalFade).removeClass(modalOpen);
        });

    };
 
}( jQuery ));