h5页面弹窗实现区域滚动

#序言

项目中经常会遇到在一个弹窗内实现区域滚动(比如查看我的领取记录等),原本以为很好实现,确实也很好实现,但实现的时候再手机端除夕拿了各种各样的问题。所以总结一下方便后人,也欢迎大神指点!!!

1.简单介绍

废话不多说,就是一个简单的嵌入到app内的h5抽奖活动页面,在当前页面的弹窗内显示获奖列表,由于列表长度也许会很长,所以弹窗内只能用滚动实现(当然可以重新开一个页面)。废话补多少,直接上代码

2.html部分

<!--领取记录弹窗-->
<div class="promptwing" style="display: none;">
    <div class="promptbg">
        <div id="wrapper">
            <div id="scroller">
                <div class="content">
                    <div class="title">
                        <span>
                            中奖时间
                        </span>
                        <span>
                            奖品名称
                        </span>
                    </div>
                    <ul class="lists" id="lists">
                        <li>
                            <span>2017.3.11 10:10:10</span><span>头像特效(随机)</span>
                        </li>
                        <li>
                            <span>2017.3.11 10:10:10</span><span>跑车</span>
                        </li>
                        <li>
                            <span>2017.3.11 10:10:10</span><span>南瓜马车</span>
                        </li>
                        <li>
                            <span>2017.3.11 10:10:10</span><span>南瓜马车</span>
                        </li>
                        <li>
                            <span>2017.3.11 10:10:10</span><span>南瓜马车</span>
                        </li>
                        <li>
                            <span>2017.3.11 10:10:10</span><span>南瓜马车</span>
                        </li>
                    </ul>
                </div>
            </div>
        </div>
        <div class="activebtn activebtnls">
            <img src="img/activebtn.png" alt="">
        </div>
    </div>
</div>
<!--页面整体部分-->
<div class="boxes">
</div>

3.css部分(less)

body{
    background: #e11139;
    // 我的领奖记录弹窗
    .promptwing{
    position: fixed;
    width:100%;
    height:100%;
    z-index:9999;
    overflow: hidden;
    background-color: rgba(0,0,0,0.7);
    display: none;
    .promptbg{
      width:8.8rem;
      height:11.376rem;
      background: url("../images/promptlistbg.png") no-repeat;
      background-size: 100%;
      margin:0 auto;
      margin-top:1.5rem;
      position: relative;
      //iscroll滚动列表
      #wrapper{
        width: 7.904rem;
        position: absolute;
        top: 3.6rem;
        left: 50%!important;
//      transform:translate(-50%);
        margin-left: -3.952rem;
        bottom: 3rem;
        overflow-x: hidden;
        #scroller{
          width: 100%;
          box-sizing: border-box;
          z-index: 10;
          //padding-left: 0.384rem;
          //padding-right: 0.384rem;
          .content{
            width: 100%;
            margin: 0 auto;
            .title{
              width: 100%;
              font-size: 0;
              span{
                display: inline-block;
                width: 50%;
                line-height: 1rem;
                font-size: 0.48rem;
                text-align: center;
                color: #ffffff;
              }
            }
            .lists{
              width: 100%;
              font-size: 0;

              span{
                //display: inline-block;
                width: 50%;
                float: left;
                color: #ffffff;
                line-height: 1rem;
                font-size: 0.384rem;
              }
              span:nth-child(1){
                text-align: center;
                //line-height: 0.6rem;
              }
              span:nth-child(2){
                text-align: left;
                padding-left:0.8rem;
                box-sizing: border-box;
                //line-height:1.2rem;
              }
            }
          }
        }
      }

      .activebtn{
        position: absolute;
        left: 50%;
//      transform:translate(-50%);
        margin-left: -2.056rem;
        //top:9rem;
        width:4.112rem;
        height:1.024;
        img{
          width:100%;
        }
      }
      .activebtnls{
        top: 9.44rem;
      }
    }
  }

    
}

4.js部分

//弹窗消失操作
$('.activebtn').on('click',function () {
    $('.promptwing').hide();
    $("body,html").css({"overflow":"auto"});
    $('.boxes').css("position","static");
})

//查看我的领取记录
$('#listlog').on('click',function () {
    $("body,html").css({"overflow":"hidden"});
    $('.boxes').css("position","fixed");
    $('.promptwing').show();
    $("#wrapper").css({"overflow":"auto"});
  
})

总结

这样就可以实现弹窗里面区域滚动,但是整体不滚动的效果,也不会影响布局.我刚开始js是给body设置的fixed,但是整个页面的布局向做移动,最后给body下一级的父元素.boxes设置就是好的,没想明白为啥给body设置fixed不行,欢迎大神们的指导

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。