解決手機系統設置字體大小后,qq內置瀏覽器rem排版錯亂問題


我們移動端項目用postcss-pxtorem插件來自適應rem

先要在計算根節點的字體

    const baseSize = 32;

    // 設置 rem 函數
    function setRem() {
      // 當前頁面寬度相對於 750 寬的縮放比例,可根據自己需要修改。
      const scale = document.documentElement.clientWidth / 750;
      // 設置頁面根節點字體大小
      document.documentElement.style.fontSize = (baseSize * Math.min(scale, 2)) + 'px'
    }

    // 初始化
    setRem()
    // 改變窗口大小時重新設置 rem
    window.onresize = function () {
      setRem()
    };    

在qq內置瀏覽器中我發現添加的字體大小會隨着系統設置的字體大小倍數走

最后找到window.getComputedStyle()方法能查詢到放大后的字體大小,我們可以根據放大倍數來再次設置字體大小

最終修改完成

    // 基准大小
    const baseSize = 32;

    // 設置 rem 函數
    function setRem() {
      // 當前頁面寬度相對於 750 寬的縮放比例,可根據自己需要修改。
      const scale = document.documentElement.clientWidth / 750;
      // 設置頁面根節點字體大小
      let fontSize = baseSize * Math.min(scale, 2)
      document.documentElement.style.fontSize = fontSize + 'px'
      // 解決手機系統設置字體大小后,qq內置瀏覽器rem排版錯亂問題
      // getComputedStyle能獲取被系統放大后的字體
      let computedFontSize = window.getComputedStyle(document.getElementsByTagName("html")[0])['font-size'].replace(/px/gi, '')
      let multiple = fontSize / computedFontSize
      document.documentElement.style.fontSize = (fontSize * multiple) + 'px'
    }
    // 初始化
    setRem()
    // 改變窗口大小時重新設置 rem
    window.onresize = function () {
      setRem()
    };

 


免責聲明!

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



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