uniapp H5打包發布后在部分手機字體無故變大,導致頁面錯亂,字體都是使用upx(rpx)單位的(這個不是問題原因),在電腦的瀏覽器和微信開發者工具上各種機型測試頁面都是正常的。
最后使用多個手機型號測試后,發現這個與手機型號無關,與微信設置的字體大小有關系。字體無故變大,導致頁面錯亂的手機都是把微信字體設置了非標准大小字體的手機。
查看微信字體大小:打開微信 → 我 → 設置 → 通用 → 字體大小
解決方法:
在App.vue的<script></script>代碼修改成一下代碼(安卓手機)
<script> (function() { if (typeof WeixinJSBridge == "object" && typeof WeixinJSBridge.invoke == "function") { //判斷程序運行環境是否是微信瀏覽器(微信內置的瀏覽器) handleFontSize(); } else { if (document.addEventListener) { document.addEventListener("WeixinJSBridgeReady", handleFontSize, false); } else if (document.attachEvent) { document.attachEvent("WeixinJSBridgeReady", handleFontSize); document.attachEvent("onWeixinJSBridgeReady", handleFontSize); } } function handleFontSize() { // 設置網頁字體為默認大小 WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize': 0 }); // 重寫設置網頁字體大小的事件 WeixinJSBridge.on('menu:setfont', function() { WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize': 0 }); }); } })(); export default { onLaunch: function() { console.log('App Launch') }, onShow: function() { console.log('App Show') }, onHide: function() { console.log('App Hide') } } </script>
在App.vue的<style></style>代碼修改成一下代碼(蘋果手機)
body { /* IOS禁止微信調整字體大小 */ -webkit-text-size-adjust: 100% !important; text-size-adjust: 100% !important; -moz-text-size-adjust: 100% !important; }