針對近日華爲,小米的部分機型,在升級系統或升級微信以後,微信內置瀏覽器產生的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