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>

  

先更新到这些,之后在更新,希望能帮助到开放

posted @ 2021-11-05 15:36  -鹿-  阅读(1447)  评论(0编辑  收藏  举报