iframe中弹出框后添加覆盖整个页面的遮罩层并且不覆盖子页面中的弹出框


这个是我最近几天遇到的一个问题,确实令我抓狂了一阵。。。。

接下来讲一讲解决方法:

1.首先得要弹出覆盖整个页面的遮罩层,由于iframe是body的一个子元素部分,所以可以将弹出层代码写到父页面中,然后在子页面拿到父页面的对象,打开父页面的遮罩


2.打开遮罩层后我遇到了问题(iframe中的弹出框也被遮罩层给覆盖了),显然这不是我想要的结果,在佳哥我都要吐血的时候突然发现原来只是我太蠢。。。。

用z-index即可实现,接下来很显然就要必须给ifame所在设置position:absolute了,问题又来了。。。。


3.设置iframe的z-index在遮罩层之上后,理所应当我悲剧的发现整个iframe都上去了,但是我只想让弹出框上去。


4.最终我只能在iframe子页面上也设置了一个遮罩层,相当于,我点击按钮弹出子页面的弹出框,同时打开两个遮罩层,一个为父元素的遮罩,一个为iframe页面上的遮罩。


补上具体实现方法:

(1)父页面的遮罩

<span style="font-size:24px;"><!--遮罩层-->
<div id="mask" >

</div>
<!-- 遮罩层结束 --></span>

(2)子页面中的遮罩(iframe)

<span style="font-size:24px;"><!--遮罩层-->
<div id="maskIframe" >

</div>
<!-- 遮罩层结束 --></span>


当然,遮罩的初始样式是display:none;

(3)定义遮罩出现的函数globalShade() 与遮罩消失的函数deleteGlobalShade()

function globalShade()
{
	//获取页面的高度和宽度
	
	if(window.parent.document.getElementById('mask'))
		{	
		
		window.parent.document.getElementById('mask').style.display="block";
	
		}
	if(document.getElementById("maskIframe"))
		{
			document.getElementById("maskIframe").style.display="block";
			
		
		}
	
		
};
function deleteGlobalShade()
{
	if(window.parent.document.getElementById('mask'))
	{	
	window.parent.document.getElementById('mask').style.display="none";

	}
if(document.getElementById("maskIframe"))
	{

		document.getElementById("maskIframe").style.display="none";
	
	}

};

$(function(){
	
	var sWidth=document.documentElement.clientWidth;
	var sHeight=document.documentElement.clientHeight;
	//获取页面的可视区域高度和宽度
	var wHeight=document.documentElement.clientHeight;
	var oMask=document.getElementById("mask");
	var oMaskIframe=document.getElementById("maskIframe");
	
	oMask.style.height=sHeight+"px";
	oMask.style.width=sWidth+"px";
	
	});





  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值