開發(fā)webapp過程中 發(fā)現(xiàn)安卓某些機(jī)型 rem 計算有誤差 目前僅發(fā)現(xiàn) 三星s7 s8 等曲面屏手機(jī)存在該問題
下面記錄解決方案
document.documentElement.style.fontSize=document.documentElement.offsetWidth/7.5+"px";
var html = document.getElementsByTagName('html')[0];
var settedFs = parseInt(html.style.fontSize);
var realFs = parseInt(window.getComputedStyle(html).fontSize);
var whileCount = 0;
while(true) {
var realFs = parseInt(window.getComputedStyle(html).fontSize);
var delta = realFs - settedFs;
console.log(settedFs,realFs)
if (Math.abs(delta) != 0) //不相等
{
html.setAttribute('style', 'font-size:'+settedFs *(settedFs/realFs) + 'px!important');
//settedFs/realFs 計算比實際值小N倍 然后在原基礎(chǔ)上在放大N倍
} else
break;
if (whileCount++ > 100) //為了避免死循環(huán)
break
}