html5弹出阴影遮罩_html5 弹出遮罩层

最近用phonegap在安卓手机中使用Html5+css3做页面,

需求:在页脚导航按钮上,点击【同意】弹出一个页面,页面中是动态生成的单选按钮。

代码:

Html代码 收藏代码

for="1">1"radio" name="a" id="1" value="1" />

for="2">2"radio" name="a" id="2" value="2" />

div>

name="yes" data-role="button" style="display: block;font-size:16px;">同意

div>

"button" id="cancelBtnPage" style="display: block;font-size:16px;">取消

div>

div>

div>

div>

"#" data-role="button" id="yesNextBtn" style="display: block;font-size:16px;">同意

Html代码 收藏代码

#bg{ display:none; position:absolute; top:0%; left:0%; width:100%; height:100%; background-color:black; z-index:1001; -moz-opacity:0.7; opacity:.70; filter:alpha(opacity=70);}

#show{display:none; position:absolute; top:25%; left:18%; width:63%; height:49%; padding:8px; border:8px solid #E8E9F7; background-color:white; z-index:1002; overflow:auto;}

Js代码 收藏代码

$('#yesNextBtn').click(function(){

//消除radio按钮上的checked

$('#btnGroups').find('input[type=radio]').each(function(){

$(this).removeProp("checked").checkboxradio("refresh");

})

document.getElementById("bg").style.display ="block";

document.getElementById("show").style.display ="block";

$('html,body').animate({scrollTop: '0px'}, 100);//因为页面很长,有纵向滚动条,先让页面滚动到最顶端,然后禁止滑动事件,这样可以使遮罩层锁住整个屏幕

$('#bg').bind("touchmove",function(e){

e.preventDefault();

});

})

下面做点补充,在使用jquery mobile写这个页面的时候,发现一个问题,

还是上面的需求:页脚固定,在页脚上写一个按钮,点击按钮后,弹出遮罩层。

环境:phonegap,jquery mobile

测试情况:这个遮罩层页面在所有PC端浏览器、手机端浏览器、小米2S,联想PAD上测试,弹出遮罩层都是一样的,没有问题,但是在三星galaxy 2s,oppo的手机上测试,弹出的遮罩层显示出来了,弹出框也显示出来了,但是在遮罩层下面有大小不定的黑色块状区域显示出来。最后,在我精简代码后,发现是由于页脚固定导致的,不管我是用jquery mobile的data-position=”fixed”还是我自己写样式position:fixed,在上面两款手机上的弹出框和遮罩层下面都会出现黑色区域,去掉后,显示正常,我暂时不确定是什么原因导致的,我现在没有安装phonegap的调试环境,没有具体发现症结所在,我用了一个我感觉比较二的方法,解决了这个问题。

页脚代码:

Html代码 收藏代码

"button" id="yesNextBtn" style="display: block;font-size:16px;">同意

div>

"button" id="noBtn" style="display: block;font-size:16px;">驳 回

div>

div>

div>

弹出框:

Html代码 收藏代码

div>

name="yes" data-role="none">同意

div>

"none" class="list-btn-active" id="cancelBtnPage">取消

div>

div>

div>

在data-role=”content”区域内有个隐藏区域,这里我写了个测试,我的代码content区域内有个隐藏区域,我用那个隐藏域的id

Html代码 收藏代码

点击弹出框代码:

Js代码 收(‘#yesNextBtn’).click(function(){(‘#bg’).css(“height”,1200);//bg高度,我这里是写死,可以获取整个page的高度

//弹出框弹出前,将footer上的所有样式去掉

(‘#footerFixed’).removeClass(‘ui-footer-fixed’);(‘#footerFixed’).removeClass(‘ui-footer’);

(‘#footerFixed’).removeClass(‘slideup’);(‘#footerFixed’).removeClass(‘ui-bar-inherit’);

(‘#footerFixed’).trigger(‘create’);

//关键是触发这个点击事件,才会导致footer上的样式失效(‘#test’).trigger(‘click’);

setTimeout(function(){

document.getElementById(“bg”).style.display =”block”;

document.getElementById(“show”).style.display =”block”;

(‘html,body’).animate({scrollTop: ‘0px’}, 100);

},200);(‘#bg’).bind(“touchmove”,function(e){

e.preventDefault();

});

$(‘#show’).bind(“touchmove”,function(e){

e.stopPropagation();

});

}) 关闭弹出框:

Js代码 收藏代码

$('#cancelBtnPage').click(function(){

//关闭弹出框时,再将样式加回来

$('#footerFixed').addClass('ui-footer-fixed');

$('#footerFixed').addClass('ui-footer');

$('#footerFixed').addClass('slideup');

$('#footerFixed').addClass('ui-bar-inherit');

$('#footerFixed').trigger('create');

document.getElementById("bg").style.display ='none';

document.getElementById("show").style.display ='none';

setTimeout(function(){

//触发样式生效

$('#test').trigger('click');

},200);

})

问题情况描述:

上面我已经描述过了,在某些机型弹出层,会有弹出层背景出现黑色块状的问题,我调试看了,这些黑色区域确实属于遮罩层,这些黑色块状区域无法直接定位,很无奈,我猜测还是页眉页脚fix后遮罩层高度问题导致的,所以在点击页脚按钮的时候,先全屏显示,然后再获取page的高度。还有一个问题,就是点击输入框后,输入法框弹出后,将page的高度进行了压缩,如果此时点击页脚上的按钮,弹出的遮罩层高度计算不准确,在这里,我做的是,当focus到输入框的时候,页脚上的按钮进行隐藏,blur后,输入法框自动隐藏后,再将页脚上的按钮显示出来。

代码如下:

Js代码 收藏代码

var footerFixed = $('div[data-role=footer]').get(0);

$('textarea,input').on('focus',function(){

$(footerFixed).css('display','none');

});

$('textarea,input').on('blur',function(){

$(footerFixed).css('display','block');

});

$('#yesNextBtn').on('tap',function(){

$('#tabs').addClass('ui-fixed-hidden');//页眉加上全屏的class

$('#tabs').trigger('create');

$(footerFixed).addClass('ui-fixed-hidden');//页脚加上全屏的class

$(footerFixed).trigger('create');

$('#bg').css("height",$('#page').height()+200);//page的高度+200

document.getElementById("bg").style.display ="block";

document.getElementById("show").style.display ="block";

$('html,body').animate({scrollTop: '0px'}, 100);

$('#show').bind("touchmove",function(e){

e.stopPropagation();

});

})

Js代码 收藏代码

$('#cancelBtnPage').click(function(){

document.getElementById("bg").style.display ='none';

document.getElementById("show").style.display ='none';

setTimeout(function(){

$('#test').trigger('click');

},200);

})

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值