華爲,小米部分機型微信瀏覽器rem不適配的解決方案

針對近日華爲,小米的部分機型,在升級系統或升級微信以後,微信內置瀏覽器產生的rem不能正確填充滿的問題,有以下解決方案html

目前來看,產生這個狀況的緣由是由於給html附font-size時,附上的font-size和實際上html的font-size 大小並不一致瀏覽器

如圖:微信

 

 

 在問題機型上展現的三個值 分別爲 1.機型最終附給html的font-size大小  2.我想賦給html的font-size大小 3.兩者的倍數spa

嘗試找了多個問題機型,最終的比例都是1.25左右(1.24999),因此解決方案以下code

//針對機型適配的代碼就不貼了  網上隨手一搜一堆 這裏就針對特殊機型的處理展現一下
var
docEl = doc.documentElement, setFontSize = function() { var clientWidth = document.documentElement.clientWidth, timer; if(!clientWidth) return;
       //本來對於html的字號設置 我這裏用的是750的標準 ,640的也是同理 docEl.style.fontSize
= 100 * (clientWidth / 750) + 'px';

      
if(window.getComputedStyle(document.getElementsByTagName("html")[0]).fontSize) { var size = window.getComputedStyle(document.getElementsByTagName("html")[0]).fontSize.split('p')[0];
          //這裏再取出當前html的font-size,和你想附的值進行比較,
//這裏爲何不直接用size< 緣由是正常機型的size也不必定等於你想附的值,嘗試了不少機型,除了問題機型外,通常差距很小,另外一半徹底相等;

  //爲何不直接*1.25 也不解釋了 最終比例不必定是1.25 if(size*1.2 < 100 * (clientWidth / 750)) {
          //若是當前html的font-size 的1.2倍仍然小於 以前想設置的值,就說明是問題機型,給以前想附的值乘1.25倍,這樣他會被系統再次除1.25獲得的纔是咱們想附的值 docEl.style.fontSize
= 125 * (clientWidth / 750) + 'px'; } } };

em。。。。大體上能看的明白吧htm

至於爲何會產生這個問題,目前還不清楚,多是由於微信瀏覽器或者問題機型對於根字號的處理細節不一致,可能之後會處理,但暫時沒有啥別的好方法,嗯blog

但願能給你們一些幫助,謝謝,轉載請標明出處rem

相關文章
相關標籤/搜索