移动端弹出阴影遮罩的几点问题和解决方法

℡╲_俬逩灬. 提交于 2019-12-27 22:31:29

在做移动端的立即购买页面时,点击底部固定栏立即购买按钮需要弹出一个阴影遮罩,在遮罩顶部有一个固定在底部的页面,所以总共是3层页面:最底层浏览页->阴影遮罩页->最上层的立即购买选择规格数量页;效果如下图:

在次过程中遇到的一些问题以及解决方案总结如下:

问题1:阴影遮罩出现后底部的页面还可以滑动;

    解决:在弹出遮罩的js里click事件中,给body加overflow:hidden的css属性;$("body").css("overflow","hidden");

问题2:页面向上滑动,阴影遮罩和阴影遮罩上的立即购买页面会随着往上移动;

   解决:编写了如下函数计算页面移动的距离,让遮罩和立即购买页面也移动相应的距离,代码如下:

[html] view plain copy
 
  1. function getScrollTop(){  
  2.        var scrollTop=0;  
  3. if(document.documentElement&&document.documentElement.scrollTop){  
  4.     scrollTop=document.documentElement.scrollTop;  
  5. }else if(document.body){  
  6.     scrollTop=document.body.scrollTop;  
  7. }  
  8. return scrollTop;  
  9. }     

写了一个简单的demo,代码如下:

[html] view plain copy
 
  1. <!DOCTYPE html>  
  2. <html>  
  3.     <head>  
  4.         <meta charset="UTF-8">  
  5.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no" name="viewport">  
  6.         <title>阴影遮罩</title>  
  7.         <script src="js/jquery-1.11.1.min.js"></script>  
  8.         <style>  
  9.             body{  
  10.                 padding:0px;  
  11.                 margin:0px;  
  12.             }  
  13.             #back1{  
  14.                     z-index: 99999;  
  15.                     display: block;  
  16.                     background: rgba(0, 0, 0, 0.498039);  
  17.                     position: absolute;  
  18.                     top: 0px;  
  19.                     width: 100%;  
  20.                     height: 100%;  
  21.             }  
  22.             .one{  
  23.                 height:100px;     
  24.                 width:100%;  
  25.                 text-align: center;  
  26.                 background-color:#fff;  
  27.                 position:absolute;  
  28.                 bottom:0px;  
  29.                 display:none;   
  30.                 position: absolute;  
  31.                 bottom: 0;  
  32.                 z-index: 9999999;  
  33.             }  
  34.             .one span{  
  35.                 font-size:24px;  
  36.                 display: inline-block;  
  37.                 height:30px;  
  38.                 width:30px;  
  39.                 position: absolute;  
  40.                 right: 18px;  
  41.                 top: 0px;  
  42.                 background-color: #ccc;  
  43.             }  
  44.         </style>  
  45.     </head>  
  46.     <body>  
  47.         <div id="back1" style="display: none; top: 0px;"></div>  
  48.         <div class="one"><p>这是遮罩上面的一层</p>     <span class="xx">x</span></div>  
  49.         <div>阴影遮罩下面的页面</div>  
  50.         <br /><br /><br /><br /><br /><br />  
  51.         <div style="height:500px;width:200px;border:1px solid red;"></div>  
  52.         <div>阴影遮罩下面的页面</div>  
  53.         <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />  
  54.         <div class="bottom" style="position:fixed;bottom:0px;height:50px;width:100%;background-color:#ccc;line-height: 50px; text-align: center;">点我出现遮罩</div>  
  55.         <script type="text/javascript">  
  56.             //获取页面上移的距离  
  57.              function getScrollTop(){  
  58.                   var scrollTop=0;  
  59.                   if(document.documentElement&&document.documentElement.scrollTop){  
  60.                     scrollTop=document.documentElement.scrollTop;  
  61.                   }else if(document.body){  
  62.                     scrollTop=document.body.scrollTop;  
  63.                   }  
  64.                   return scrollTop;  
  65.             }     
  66.             $(".bottom").on("click",function(){  
  67.                 $("#back1").css("top",getScrollTop()+'px');  
  68.                 $("#back1").show();  
  69.                 $(".one").css("bottom",-getScrollTop()+'px');  
  70.                 $(".one").show();  
  71.                 $("body").css("overflow","hidden");  
  72.             });  
  73.             $(".xx").on("click",function(){  
  74.                 $("#back1").hide();  
  75.                 $(".one").hide();  
  76.                 $("body").css("overflow","auto");  
  77.             });  
  78.         </script>  
  79.     </body>  
  80. </html>  


至此,一个好用的弹出demo就完美收官啦!!

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!