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

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

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



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


20170407132806121.png


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



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


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


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


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


function getScrollTop(){
        var scrollTop=0;
  if(document.documentElement&&document.documentElement.scrollTop){
      scrollTop=document.documentElement.scrollTop;
  }else if(document.body){
      scrollTop=document.body.scrollTop;
  }
  return scrollTop;
 }  


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


<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no" name="viewport">
    <title>阴影遮罩</title>
    <script src="js/jquery-1.11.1.min.js"></script>
    <style>
      body{
        padding:0px;
        margin:0px;
      }
      #back1{
            z-index: 99999;
            display: block;
            background: rgba(0, 0, 0, 0.498039);
            position: absolute;
            top: 0px;
            width: 100%;
            height: 100%;
      }
      .one{
        height:100px; 
        width:100%;
        text-align: center;
        background-color:#fff;
        position:absolute;
        bottom:0px;
        display:none; 
        position: absolute;
        bottom: 0;
        z-index: 9999999;
      }
      .one span{
        font-size:24px;
        display: inline-block;
        height:30px;
        width:30px;
        position: absolute;
            right: 18px;
          top: 0px;
          background-color: #ccc;
      }
    </style>
  </head>
  <body>
    <div id="back1" style="display: none; top: 0px;"></div>
    <div class="one"><p>这是遮罩上面的一层</p>     <span class="xx">x</span></div>
    <div>阴影遮罩下面的页面</div>
    <br /><br /><br /><br /><br /><br />
    <div style="height:500px;width:200px;border:1px solid red;"></div>
    <div>阴影遮罩下面的页面</div>
    <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    <div class="bottom" style="position:fixed;bottom:0px;height:50px;width:100%;background-color:#ccc;line-height: 50px; text-align: center;">点我出现遮罩</div>
    <script type="text/javascript">
      //获取页面上移的距离
       function getScrollTop(){
          var scrollTop=0;
          if(document.documentElement&&document.documentElement.scrollTop){
            scrollTop=document.documentElement.scrollTop;
          }else if(document.body){
            scrollTop=document.body.scrollTop;
          }
          return scrollTop;
      } 
      $(".bottom").on("click",function(){
        $("#back1").css("top",getScrollTop()+'px');
        $("#back1").show();
        $(".one").css("bottom",-getScrollTop()+'px');
        $(".one").show();
        $("body").css("overflow","hidden");
      });
      $(".xx").on("click",function(){
        $("#back1").hide();
        $(".one").hide();
        $("body").css("overflow","auto");
      });
    </script>
  </body>
</html>


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

目录
相关文章
|
前端开发 JavaScript
前端知识(十)———JavaScript 使用URL跳转传递数组对象数据类型的方法
前端知识(十)———JavaScript 使用URL跳转传递数组对象数据类型的方法
463 0
|
11月前
|
API 索引
鸿蒙开发:实现一个超简单的网格拖拽
实现拖拽,最重要的三个方法就是,打开编辑状态editMode,实现onItemDragStart和onItemDrop,设置拖拽移动动画和交换数据,如果想到开启补位动画,还需要实现supportAnimation方法。
309 13
鸿蒙开发:实现一个超简单的网格拖拽
|
10月前
|
人工智能 运维 监控
别再熬夜调模型——从构想到落地,我们都管了!
本文将以 Qwen2.5 : 7B 为例进行演示,介绍如何通过人工智能平台 PAI实现AI 研发的全链路支持,覆盖了从数据标注、模型开发、训练、评估、部署和运维管控的整个AI研发生命周期。
1289 37
|
测试技术 Android开发 Python
python | 大麦网抢票(移动端)
上篇文章写到了使用windows11打开安卓应用,那么使用python来抢大麦网票应该也是可以的吧。库使用的是`pyautogui`。
1710 0
python | 大麦网抢票(移动端)
Vue3拖拽插件(vuedraggable@next)
vuedraggable 是一款 Vue2 拖拽插件,可轻松实现列表项的拖拽排序与交互。通过简单配置,即可在不同区域间拖动元素并实现数据同步。支持多种事件监听和自定义样式。
1488 2
Vue3拖拽插件(vuedraggable@next)
|
JavaScript API
Echarts中单独为每个legend图例设置样式-根据数据正负显示不同样式
通过上述方法,我们便能够在ECharts中根据数据的正负为每个图例项设置不同的样式,增强了图表的可读性和表现力。这种方法虽然略显间接,但不失为一种灵活的解决方案。
1987 2
|
测试技术 Android开发 数据安全/隐私保护
脚本 | 手机大麦网脚本使用说明
这篇文章主要针对上篇文章的代码做一个使用说明
3607 0
|
前端开发 容器
边框线条的魔法:CSS动画效果,让网页设计流动起来!
边框线条的魔法:CSS动画效果,让网页设计流动起来!
|
前端开发 UED
深入理解CSS中的文本对齐方式:水平对齐与垂直对齐
深入理解CSS中的文本对齐方式:水平对齐与垂直对齐
898 5
阿里云合同申请流程:电子和鲜章纸质合同申请以及合同甲方修改教程
购买阿里云服务后,需合同报销或请款可通过线上自助申请。访问合同管理页面,选择按订单、账单或发票申请合同。确认信息无误后创建草稿合同,随后可在管理页面操作下载、转正或删除。北京、广东用户额外需要纸质合同用于备案时,可在线申请盖鲜章的纸质版。若需修改合同甲方主体,可变更账号实名认证以更新主体信息。