IOS不支持overflow: hidden;


IOS不支持overflow: hidden;

假設頁面上有個彈出窗,彈出窗出現后,只想讓用戶的視覺鎖定在彈出窗上,正常我們會想到用overflow:hidden這個屬性來實現,如下

html{
    overflow:hidden;
}

這樣寫在PC端上沒有任何問題,效果杠杠到,但是在IOS移動端上,彈出窗出現后,依舊可以在背景層部分滑動

解決方案:

html{
    overflow:hidden;
    position:fixed;
}

如果需要關閉彈窗后,滾動條出現,使用如下CSS即可。

html{
    overflow:auto; position:static;
}

但是,會存在“關閉彈窗后,滾動條會返回到頁面頂部”的問題  !!!!!!!!!!!!!!!!!!!!!!!

 

 

======================================================================

 

點擊按鈕,顯示彈窗:

(按照上面的方法解決,加上overflow:hidden;position:fixed; 雖然滑動的時候,下面的頁面不會被滑動,但是頁面會滾動到頂部,而不是保持在底部)

最終找到一個方法,就是用scroll-view來代替

  代碼:

//html

<scroll-view style="height:100vh" scroll-y="{{isScroll}}">
  <view style="width:100%;">
    <view style="height:3000rpx;">
      <view>header</view>
      <view style="margin-top:2900rpx;" id="footer">footer</view>
      <button bindtap="button_click">顯示彈窗</button>
    </view>
  </view>
  <!--彈窗  -->
  <view class="mask" wx:if="{{showAlert}}" bindtap="closeModal">
    <view class="showModal">
      彈窗
    </view>
  </view>
</scroll-view>
//css

.mask{
  width:100%;
  height:100%;
  position:fixed;
  top:0;
  left:0;
  background:rgba(0,0,0,.7);
}
.showModal{
  position:fixed;
  top:50%;
  left:50%;
  transform:translate(-50%,-50%);
  width:70%;
  height:600rpx;
  background:white;
}
//js

Page({
  /**
   * 頁面的初始數據
   */
  data: {
    showAlert:false,
    isScroll: true,
  },
  button_click:function(){
    this.setData({
      showAlert: true,
      isScroll: false
    }) 
  },
  closeModal:function(){
    this.setData({
      showAlert: false,
      isScroll: true
    })
  }
})

 

  效果圖:

 

 

 

 

 

diadia的的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM