解决微信公众号开发中,手机设置了大号字体影响H5页面样式乱掉的解决方案

1,453 阅读1分钟

记录开发中自己遇到问题,及解决方法。

解决微信公众号开发中,手机设置了大号字体影响H5页面样式乱掉的解决方案

1、ios端只需要设置body样式

body{

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

}

2、安卓端,需要判断是否是微信环境,

<script>
  (function () {
    if (typeof WeixinJSBridge == "object" && typeof WeixinJSBridge.invoke == "function") {
      handleFontSize();
    } else {
      document.addEventListener("WeixinJSBridgeReady", handleFontSize, false);
      htmlFontSize()
    }
    function handleFontSize() {
      // 设置网页字体为默认大小
      WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize': 0 });
      // 重写设置网页字体大小的事件
      WeixinJSBridge.on('menu:setfont', function () {
        WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize': 0 });
      });
    }
    function htmlFontSize() {



      var h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);

      var w = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);

      var width = w > h ? h : w;

      width = width > 720 ? 720 : width

      var fz = ~~(width * 100000 / 36) / 10000

      document.getElementsByTagName("html")[0].style.cssText = 'font-size: ' + fz + "px";

      var realfz = ~~(+window.getComputedStyle(document.getElementsByTagName("html")[0]).fontSize.replace('px', '') * 10000) / 10000

      if (fz !== realfz) {

        document.getElementsByTagName("html")[0].style.cssText = 'font-size: ' + fz * (fz / realfz) + "px";

      }
    }
  })();
</script>