解决因为⼿机设置字体⼤⼩导致h5页⾯在webview中变形的bug
⾸先,我们做了⼀个H5页⾯,在各种⼿机浏览器中打开都没问题。我们采⽤了rem单位进⾏布局,通过JS来动态计算⽹页的视窗宽度,动态设置html的font-size,⼀切都⽐较完美。
这时候,你⾃信满满的将h5地址交给了APP⼯程师,做了⼀个WEBVIEW嵌套,然后就顺利交⼯了。
测试组在⼀堆⼿机中测试APP,突然,在某个⼿机上打开,你的页⾯布局了乱了,字变⼤或者变⼩,总之很奇葩。
你怀疑是APP的问题,但是客户端死活不承认。你在该⼿机浏览器中查看,确保没有⼀⽑钱问题,也死活不承认是你的问题。于是测试⼈员对你俩不死不休的要求修改。于是,客户端给你加了调试⼯具后,你打开chrome进⾏调试,发现⼀个⾮常⾮常奇葩的问题:
我明明设置的html字号是100px,为什么在APP中就变成了86(或者其他数字),你遍所有的代码,都没有发现这个86是从哪⾥来的,你快疯了!!了N多⼈帮忙,都没能解决这个问题!!我很希望能够告诉你,赶紧来看我这篇博⽂,因为,你现在经历的⼀切,我TM刚刚经历过~~如何缓解学习压力
好,你怎么也不会想到是⼿机设置字体⼤⼩造成的。因为默认浏览器中的内容是不受系统字体⼤⼩设置控制的,⾄少我遇到的⼏台⼿机都是这样的情况。但是APP不⼀样,APP是受那个玩意⼉控制的!!
问题描述清楚了,出现这个问题,有以下因素
1. 你的页⾯采⽤了rem单位,并且是采⽤js动态计算html的font-size
2. 你的页⾯被加在了APP中的webview中
放假20193. 这该死的⼿机被重设了字体⼤⼩
搞笑的舞蹈解决⽅法
⼀般,我们动态计算好html的font-size之后,我们就啥都不⼲了,就⾛了。但是,我们现在知道了,我们设置的⼤⼩不⼀定是真实的⼤⼩,所以,我们需要在设置完字体⼤⼩之后,再去重新获取⼀下html的font-size,看看实际的这个值,和我们设置的是不是⼀样。如果不⼀样,就要根据⽐例再设置⼀次。
以下是我的完整代码:
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
医院科室总结var realfz = ~~(+ElementsByTagName(“html”)[0]).place(‘px’,”)*10000)/10000
if (fz !== realfz) {
}
}
粤语经典歌曲
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论