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

简介: 在做移动端的立即购买页面时,点击底部固定栏立即购买按钮需要弹出一个阴影遮罩,在遮罩顶部有一个固定在底部的页面,所以总共是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就完美收官啦!!

目录
相关文章
【UI】 element -ui select下拉框label显示多个值
【UI】 element -ui select下拉框label显示多个值
547 1
|
前端开发 JavaScript
前端知识(十)———JavaScript 使用URL跳转传递数组对象数据类型的方法
前端知识(十)———JavaScript 使用URL跳转传递数组对象数据类型的方法
604 0
|
API 索引
鸿蒙开发:实现一个超简单的网格拖拽
实现拖拽,最重要的三个方法就是,打开编辑状态editMode,实现onItemDragStart和onItemDrop,设置拖拽移动动画和交换数据,如果想到开启补位动画,还需要实现supportAnimation方法。
362 13
鸿蒙开发:实现一个超简单的网格拖拽
|
监控 Java API
谷粒商城笔记+踩坑(25)——整合Sentinel实现流控和熔断降级
先简单介绍熔断、降级等核心概念,然后阐述SpringBoot整合Sentinel的实现方式,最后介绍Sentinel在本项目中的应用。
谷粒商城笔记+踩坑(25)——整合Sentinel实现流控和熔断降级
|
存储 安全 Java
基于springboot的课程作业管理系统
基于springboot的课程作业管理系统
|
前端开发 UED
深入理解CSS中的文本对齐方式:水平对齐与垂直对齐
深入理解CSS中的文本对齐方式:水平对齐与垂直对齐
1056 5
|
JavaScript 前端开发
vue实现循环发起多个异步请求——Promise.all()与Promise.race()
vue实现循环发起多个异步请求——Promise.all()与Promise.race()
669 1
|
前端开发 容器
边框线条的魔法:CSS动画效果,让网页设计流动起来!
边框线条的魔法:CSS动画效果,让网页设计流动起来!
阿里云合同申请流程:电子和鲜章纸质合同申请以及合同甲方修改教程
购买阿里云服务后,需合同报销或请款可通过线上自助申请。访问合同管理页面,选择按订单、账单或发票申请合同。确认信息无误后创建草稿合同,随后可在管理页面操作下载、转正或删除。北京、广东用户额外需要纸质合同用于备案时,可在线申请盖鲜章的纸质版。若需修改合同甲方主体,可变更账号实名认证以更新主体信息。
|
传感器 安全 人机交互
智能家居技术在现代生活中的应用与挑战
本文深入探讨了智能家居技术如何革新我们的日常生活,从自动化控制到数据安全,再到用户互动体验的全方位影响。通过分析智能家居系统的工作原理、实际应用案例及其面临的主要挑战,旨在为读者提供对智能家居技术现状及未来趋势的全面理解。

热门文章

最新文章