最近工作时候发现,移动端浏览器页面与微信浏览器不一样,微信浏览器明显变形了
我们是通过js观测屏幕宽度,来设置html的字体大小,以iphone6位基准模板通过postcss-pxtorem这个插件把px转化成rem,这样我们写项目的时候就可以用px,然后通过插件转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() }
但是为啥会变形呢?
经过研究发现,微信安卓版 7.0.10 版本起,网页的字体会跟随微信设置里的字体大小更改而变化。
下面是原链接
https://developers.weixin.qq.com/community/develop/doc/000a26b86948f8743cb9a6da951409
微信也给出了方法,然后我把项目里如何结局给贴出来
我在App.vue也就是根的父组件中的mounted方法中设置微信字体
function handleFontSize() { // 设置网页字体为默认大小 WeixinJSBridge.invoke(\'setFontSizeCallback\', { \'fontSize\' : 2 }); // 重写设置网页字体大小的事件 WeixinJSBridge.on(\'menu:setfont\', function() { WeixinJSBridge.invoke(\'setFontSizeCallback\', { \'fontSize\' : 2 }); }); } if (typeof WeixinJSBridge == "object" && typeof WeixinJSBridge.invoke == "function") { handleFontSize(); }
后来发现进行路由跳转的时候,字体会重新改变,我又在路由钩子里也改变了微信字体
import Router from \'vue-router\'
router.afterEach((to, from) => { function handleFontSize() { // 设置网页字体为默认大小 WeixinJSBridge.invoke(\'setFontSizeCallback\', { \'fontSize\' : 2 }); // 重写设置网页字体大小的事件 WeixinJSBridge.on(\'menu:setfont\', function() { WeixinJSBridge.invoke(\'setFontSizeCallback\', { \'fontSize\' : 2 }); }); } if (typeof WeixinJSBridge == "object" && typeof WeixinJSBridge.invoke == "function") { handleFontSize(); } })
这样微信浏览器的问题就解决了