大致思路是这样的:当模态框出现的时候,给底部页面设置固定定位。模态框关闭的时候,去除固定定位。当我这么写的时候,底部页面滚动的问题解决了,但是又出现了一个新问题:每次模态框出现的时候,底部页面会自动跳到顶部去。所以,我添加了一个scroll方法,让页面回到原来的位置上去。代码如下:
$('#myModal').modal({backdrop: 'static', keyboard: false}); /*点击空白处或者按ESC键模态框不隐藏 */ $('#myModal').modal('hide');/*模态框默认隐藏*/ var Top = [] ;/*页面滚动过的距离*/ $(window).scroll(function() { var top = $(window).scrollTop(); Top.push(top); }) $("body").on("click",'a',function() {/*a标签:点击出现模态框*/ var top = 0; var length = Top.length; if(length == 0) { top = 0; }else { top = -Top[length-1];/*最后一次滚动过的距离*/ } $("ul.payConsum-record").css({'position':'fixed','top':top,'left':0,'right':0,'bottom':0,'margin-top':0});/*ul.payConsum-record:底部页面元素,设置为固定定位*/ }); $('.close').on('click',function() {/*关闭模态框*/ var length = Top.length; $("ul.payConsum-record").css({'position':''}); $(window).scrollTop(Top[length-2]); });
这里我的模态框是直接使用的bootstrap里面的。当通过手机浏览器打开时,底部页面是不会再滚动了。但是放到微信上又出现了新问题,模态框滚动的时候底部会出现一层白色的,研究半天才发现是bootstrap里的模态框出现后会自动生成一个 .modal-backdrop
元素。所以我把这个去掉之后,给模态框重新写了颜色。至此,微信上的模态框问题也解决了。
——来自咕噜的鱼