揭示模态的黑色层

时间:2016-08-12 17:41:13

标签: jquery modal-dialog popup

我有一个网页,其中包含三个模式(即弹出窗口),但其中只有一个正常工作。另外两个在它们上面有一个黑色层,它应该在后台。

我在这个网站上已经阅读过有关类似问题的其他主题,但到目前为止没有任何帮助。我真的很困惑。

有人可以帮我一点吗?



(function($) {

/*---------------------------
 Defaults for Reveal
----------------------------*/
	 
/*---------------------------
 Listener for data-reveal-id attributes
----------------------------*/

	$('a[data-reveal-id]').live('click', function(e) {
		e.preventDefault();
		var modalLocation = $(this).attr('data-reveal-id');
		$('#'+modalLocation).reveal($(this).data());
	});

/*---------------------------
 Extend and Execute
----------------------------*/

    $.fn.reveal = function(options) {
        
        
        var defaults = {  
	    	animation: 'fadeAndPop', //fade, fadeAndPop, none
		    animationspeed: 300, //how fast animtions are
		    closeonbackgroundclick: false, //if you click background will modal close?
		    dismissmodalclass: 'close-reveal-modal' //the class of a button or element that will close an open modal
    	}; 
    	
        //Extend dem' options
        var options = $.extend({}, defaults, options); 
	
        return this.each(function() {
        
/*---------------------------
 Global Variables
----------------------------*/
        	var modal = $(this),
        		topMeasure  = parseInt(modal.css('top')),
				topOffset = modal.height() + topMeasure,
          		locked = false,
				modalBG = $('.reveal-modal-bg');

/*---------------------------
 Create Modal BG
----------------------------*/
			if(modalBG.length == 0) {
				modalBG = $('<div class="reveal-modal-bg" />').insertAfter(modal);
			}		    
     
/*---------------------------
 Open & Close Animations
----------------------------*/
			//Entrance Animations
			modal.bind('reveal:open', function () {
			  modalBG.unbind('click.modalEvent');
				$('.' + options.dismissmodalclass).unbind('click.modalEvent');
				if(!locked) {
					lockModal();
					if(options.animation == "fadeAndPop") {
						modal.css({'top': $(document).scrollTop()-topOffset, 'opacity' : 0, 'visibility' : 'visible'});
						modalBG.fadeIn(options.animationspeed/2);
						modal.delay(options.animationspeed/2).animate({
							"top": $(document).scrollTop()+topMeasure + 'px',
							"opacity" : 1
						}, options.animationspeed,unlockModal());					
					}
					if(options.animation == "fade") {
						modal.css({'opacity' : 0, 'visibility' : 'visible', 'top': $(document).scrollTop()+topMeasure});
						modalBG.fadeIn(options.animationspeed/2);
						modal.delay(options.animationspeed/2).animate({
							"opacity" : 1
						}, options.animationspeed,unlockModal());					
					} 
					if(options.animation == "none") {
						modal.css({'visibility' : 'visible', 'top':$(document).scrollTop()+topMeasure});
						modalBG.css({"display":"block"});	
						unlockModal()				
					}
				}
				modal.unbind('reveal:open');
			}); 	

			//Closing Animation
			modal.bind('reveal:close', function () {
			  if(!locked) {
					lockModal();
					if(options.animation == "fadeAndPop") {
						modalBG.delay(options.animationspeed).fadeOut(options.animationspeed);
						modal.animate({
							"top":  $(document).scrollTop()-topOffset + 'px',
							"opacity" : 0
						}, options.animationspeed/2, function() {
							modal.css({'top':topMeasure, 'opacity' : 1, 'visibility' : 'hidden'});
							unlockModal();
						});					
					}  	
					if(options.animation == "fade") {
						modalBG.delay(options.animationspeed).fadeOut(options.animationspeed);
						modal.animate({
							"opacity" : 0
						}, options.animationspeed, function() {
							modal.css({'opacity' : 1, 'visibility' : 'hidden', 'top' : topMeasure});
							unlockModal();
						});					
					}  	
					if(options.animation == "none") {
						modal.css({'visibility' : 'hidden', 'top' : topMeasure});
						modalBG.css({'display' : 'none'});	
					}		
				}
				modal.unbind('reveal:close');
			});     
   	
/*---------------------------
 Open and add Closing Listeners
----------------------------*/
        	//Open Modal Immediately
    	modal.trigger('reveal:open')
			
			//Close Modal Listeners
			var closeButton = $('.' + options.dismissmodalclass).bind('click.modalEvent', function () {
			  modal.trigger('reveal:close')
			});
			
			if(options.closeonbackgroundclick) {
				modalBG.css({"cursor":"pointer"})
				modalBG.bind('click.modalEvent', function () {
				  modal.trigger('reveal:close')
				});
			}
			$('body').keyup(function(e) {
        		if(e.which===27){ modal.trigger('reveal:close'); } // 27 is the keycode for the Escape key
			});
			
			
/*---------------------------
 Animations Locks
----------------------------*/
			function unlockModal() { 
				locked = false;
			}
			function lockModal() {
				locked = true;
			}	
			
        });//each call
    }//orbit plugin call
})(jQuery);
&#13;
.reveal-modal-bg {
	text-align:center;
	position: fixed; 
	height: 100%;
	width: 100%;
	background: #000;
	background: rgba(0,0,0,0.7);
	z-index: 100;
	display: none;
	top: 0;
	left: 0; 
}

	
.reveal-modal {
	visibility: hidden;
	margin-top:9%;
	left: 31.9%;
	width: 490px;
	background: rgba(250,250,250,0.9) url(modal-gloss.png) no-repeat -200px -80px;
	position: fixed;
	z-index: 100;
	padding: 20px 0px 34px;
	-moz-border-radius: 5px;
	-webkit-border-radius: 5px;
	border-radius: 5px;
	-moz-box-shadow: 0 0 10px rgba(0,0,0,.4);
	-webkit-box-shadow: 0 0 10px rgba(0,0,0,.4);
	-box-shadow: 0 0 10px rgba(0,0,0,.4);
}
		
.col-md-12 send {		
	font-family: Verdana, Geneva, sans-serif;
	font-weight: 100;
	font-style: normal;
	font-variant: normal;		
}
				
.reveal-modal h1 {	
	text-align: center;
	font-size: 30px;
	font-family: Raleway Semi-Bold 600, sans-serif;
	font-weight: 150;
}

.reveal-modal h5 {	
	text-align: center;
	font-size: 15px;
	font-family: Raleway Bold, sans-serif;
	font-weight: 700;
}

.companyowners {	
	text-align: center;
	display: flex;
	padding-top: 10px;
}

.companyowners > div {
	flex: 1;
}
		
.reveal-modal.small 		{ width: 200px; margin-left: -140px;}
.reveal-modal.medium 	{ width: 400px; margin-left: -240px;}
.reveal-modal.large 		{ width: 600px; margin-left: -340px;}
.reveal-modal.xlarge 	{ width: 800px; margin-left: -440px;}
	


.close-reveal-modal {
	font-size: 22px;
	line-height: .5;
	position: absolute;
	top: 8px;
	right: 11px;
	color: #aaa;
	text-shadow: 0 -1px 1px rbga(0,0,0,.6);
	font-weight: bold;
	cursor: pointer;
}
&#13;
<script src="https://code.jquery.com/jquery-1.6.min.js"></script>
<div class="popups">
	<a href="#" data-reveal-id="myModal" data-animation="fade">LINK1</a>
	<a href="#" data-reveal-id="myModal2" data-animation="fade">LINK2</a>
	<a href="#" data-reveal-id="myModal3" data-animation="fade">LINK3</a>
</div>
	
	
	
	<div class="reveal-modal-bg">
		<div id="myModal" class="reveal-modal">
		<section class="content margin-top-50 section-bg">
		<div class="container about">
		<div class="row margin-bottom-50 margin-top-50">
		<div class="col-md-6 margin-top-50">

		Popup1
						
        </div>
		</div>
		</div>	
		<div class="close-reveal-modal">&#215;</div>
		</div>
	</div>

	<div class="reveal-modal-bg">
		<div id="myModal2" class="reveal-modal">
		<section class="content margin-top-50 section-bg">
		<div class="container about">
		<div class="row margin-bottom-50 margin-top-50">
		<div class="col-md-6 margin-top-50">

		Popup2
						
        </div>
		</div>
		</div>	
		<div class="close-reveal-modal">&#215;</div>
		</div>
	</div>
	
	<div class="reveal-modal-bg">
		<div id="myModal3" class="reveal-modal">
		<section class="content margin-top-50 section-bg">
		<div class="container about">
		<div class="row margin-bottom-50 margin-top-50">
		<div class="col-md-6 margin-top-50">

		Popup3
						
        </div>
		</div>
		</div>	
		<div class="close-reveal-modal">&#215;</div>
		</div>
	</div>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

在任何模态元素之前使用<div class = "reveal-modal-bg"></div>,而不是将模态元素包装在其中。这就是造成问题的原因。

<script src="https://code.jquery.com/jquery-1.6.min.js"></script>
<link rel="stylesheet" href="test.css">

<div class="popups">
<a href="#" data-reveal-id="myModal" data-animation="fade">LINK1</a>
<a href="#" data-reveal-id="myModal2" data-animation="fade">LINK2</a>
<a href="#" data-reveal-id="myModal3" data-animation="fade">LINK3</a>
<a href="#" data-reveal-id="myModal4" data-animation="fade">LINK3</a>   
</div>


//ONLY PUT THIS HERE ONCE//
<div class="reveal-modal-bg"></div>
//.......................//


    <div id="myModal" class="reveal-modal">
        <section class="content margin-top-50 section-bg">
            <div class="container about">
                <div class="row margin-bottom-50 margin-top-50">
                    <div class="col-md-6 margin-top-50">

                        Popup1

                    </div>
                </div>
            </div>
        </section>  
    <div class="close-reveal-modal">&#215;</div>
    </div>

    <div id="myModal2" class="reveal-modal">
        <section class="content margin-top-50 section-bg">
            <div class="container about">
                <div class="row margin-bottom-50 margin-top-50">
                    <div class="col-md-6 margin-top-50">

                        Popup2

                    </div>
                </div>
            </div>
        </section>  
    <div class="close-reveal-modal">&#215;</div>
    </div>


<script src="test.js"></script>