IOS H5頁面的回彈 (及其他小問題)


前沿

在做和原生IOS和android 的H5頁面 時候 會有些交互上的差體驗 。

1.在iOS上頁面回彈效果 禁止 

解決方法:

必須在最外層元素上 或者在 body ,html 添加 

     

html, body {
        width: 100%;
        height:  100vh;
        position: fixed;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
}

  

 使用 fixed 布局 是為了固定位置,但是這樣就會導致

iOS H5頁面在滑動到底部的時候 不能滑動了,會不好使會卡住,

    

親自 實驗 有下面2個方案:

   

    第一種方案: 

     1.  jQuery 項目 引入inobounce 的js 

      地址 https://github.com/lazd/iNoBounce

     <script src="inobounce.js"></script>

   

   在你需要的滾動的元素上 添加 下方CSS

          overflow: auto;

        -webkit-overflow-scrolling: touch;

 

  2. vue , react 項目中 

    

下載  npm install inobounce -s

  

import inobounce from 'inobounce'
export default {
  data() {
    return {  }
  },
  mounted() { },
  created() {
    let u = navigator.userAgent
    if (u.indexOf('iPhone') > -1) {
      inobounce.enable()
    }
  },
  beforeDestroy() {
    inobounce.disable()
  },
  methods: { }
}
</script>

    

  (說明: 這個方法只適用 沒有多層彈出框的 ,就只限在一層的 H5上,不然還是有問題),嘗試改動源碼 依舊沒有用,有點頭疼

   

 

 第二種方案:

     在body上添加CSS屬性: 這個安全區域 

 

body {

    padding-top: env(safe-area-inset-top);

    padding-left: env(safe-area-inset-left);

    padding-right: env(safe-area-inset-right);

    padding-bottom: env(safe-area-inset-bottom);

}

 

 第二張方案應該是最實用的 基本都解決了,推薦使用

 

 

2. iOS 上 把微信上把字體調大,加載頁面會先縮小后放大

 

解決方案:

 

在iOS上

 在跟目錄的 CSS 上 寫

 

 body {

      -webkit-text-size-adjust: 100% !important;

      text-size-adjust: 100% !important;

      -moz-text-size-adjust: 100% !important;

    }

Android  只能通過js 調整:

 

<script>

    (function () {

      if (typeof WeixinJSBridge == "object" && typeof WeixinJSBridge.invoke == "function") {

        handleFontSize();

      } else {

        if (document.addEventListener) {

          document.addEventListener("WeixinJSBridgeReady", handleFontSize, false);

        } else if (document.attachEvent) {

          document.attachEvent("WeixinJSBridgeReady", handleFontSize);

          document.attachEvent("onWeixinJSBridgeReady", handleFontSize);

        }

      }

      function handleFontSize() {

        WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize': 0 });

        WeixinJSBridge.on('menu:setfont', function () {

          WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize': 0 });

        });

      }

    })();

  </script>

  

先更新到這些,之后在更新,希望能幫助到開放


免責聲明!

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



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