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不行,歡迎大神們的指導

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。