博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于移动端页面在手机调整字体大小后无法正常显示(已解决)
阅读量:5925 次
发布时间:2019-06-19

本文共 2924 字,大约阅读时间需要 9 分钟。

关于移动端页面在手机调整字体大小后内容适配的问题,作为新手我也刚好是第一次遇到,

已经完成的移动端页面,正常情况下在手机上的浏览器端和App端都可以正常显示,可当测

试把手机字体调大后,布局就忽然变乱了....盒子里面的内容向内挤了。说实话,刚开始感觉

这种问题应该可以忽略,毕竟字体调大后,又可以调回原来的啊,而且大部分手机都是默认

显示标准字体吧。而且我在移动端的meta标签里已经给viewport容器添加了相应属性值,

也是用rem布局的,还会出现这种错乱的情况,我能怎么办....不过后来想了想,既然你是前

端工程师,搞技术的,就应该要学会解决技术问题啊,所以我还是打开了浏览器,开始动手

我最熟悉的骚操作Ctrl+C、Ctrl+V...

刚开始我在找是不是viewport容器里还有些属性值少添加了。

我自己原来的值是这样的:

复制代码

感觉是正常的,因为已经调整好了设备宽度、默认缩放比、还有禁止用户手动缩放,所以应该没问题,不过我之后

还是多添加了两个属性值:

复制代码

添加的属性值是最小和最大缩放比,其实感觉没必要了,因为已经设置了初始化缩放比,不过还是提交测试了,

意料之中,还是没用....

之后上网终于找了一篇大佬文章,关于如何处理移动端调整字体大小问题的解决方案

文章链接:

我下面的代码也是参考他的,不过自己有一些小改动,反正我的移动端页面已经适应了。[耶][耶][耶]

(注:需要注意的是每次调整手机字体大小后,需要重新刷新下页面才有效)

fontAdapt();function fontAdapt(){    /*适应移动端APP调整字体大小*/    (function() {        //新创建一个div元素,并设置该元素的字体大小        var $dom = document.createElement('div');        //移动端采用rem布局,所以设置新创建的元素字体单位为rem        //这里设置字体大小为10,方便后面计算        $dom.style = 'font-size:10rem;';        document.body.appendChild($dom);        //计算出新创建元素调整后的字体大小        var scaledFontSize = parseInt(window.getComputedStyle($dom, null).getPropertyValue('font-size'));        //移除新创建元素,以免影响页面布局        document.body.removeChild($dom);        //计算原字体和调整后字体的比例,原字体为10rem,取数字10,        var scaleFactor = 10 / scaledFontSize;                //取出html元素字体的大小        //注意,这个大小也经过缩放了        var originRootFontSize = parseInt(window.getComputedStyle(document.documentElement, null).getPropertyValue('font-size'));        //通过上面的比例调整页面当前的字体大小,以适应移动端,单位为rem        document.documentElement.style.fontSize = originRootFontSize * scaleFactor + 'rem';    })();    /*适应手机端浏览器调整字体大小*/    (function(doc, win) {        //用原生方法获取用户设置的浏览器的字体大小(兼容ie)        if(doc.documentElement.currentStyle) {             var user_webset_font=doc.documentElement.currentStyle['fontSize'];        }        else {             var user_webset_font=getComputedStyle(doc.documentElement,false)['fontSize'];        }        //取整后与默认16px的比例系数        var xs=parseFloat(user_webset_font)/16;        //设置rem的js设置的字体大小        var view_jsset_font,result_font;        var docEl = doc.documentElement,        resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',        clientWidth,        recalc = function() {            clientWidth = docEl.clientWidth;            if(!clientWidth) return;            if(!doc.addEventListener) return;            if(clientWidth<750){                //设置rem的js设置的字体大小                view_jsset_font=100 * (clientWidth / 750);                //最终的字体大小为rem字体/系数                result_font=view_jsset_font/xs;                //设置根字体大小                docEl.style.fontSize = result_font + 'px';            }            else{                docEl.style.fontSize = 100 + 'px';            }       };       win.addEventListener(resizeEvt, recalc, false);       doc.addEventListener('DOMContentLoaded', recalc, false);    })(document, window);}复制代码

有哪里不懂或有更好建议的欢迎留言~~

转载于:https://juejin.im/post/5c7cd9896fb9a049f9134bde

你可能感兴趣的文章
做Adsense的一些经验
查看>>
私活利器,docker快速部署node.js应用
查看>>
2018第51周日
查看>>
Process of knowledge discovery in databases
查看>>
C#中字符串的内存分配与驻留池
查看>>
Cowboy 源码分析(十八)
查看>>
SharePoint 2007 "Select People and Groups"中搜索不到其他Domain账户的问题[已解决]
查看>>
cas 资源
查看>>
理中汤治疗口疮
查看>>
黄聪:wordpress如何开启文章格式post format
查看>>
Android文件Apk下载变ZIP压缩包解决方案
查看>>
[转载]Android Layout标签之-viewStub,requestFocus,merge,include
查看>>
Android菜单详解——理解android中的Menu
查看>>
[原] jQuery EasyUI 1.2.6源码、Demo合集、离线API
查看>>
view 背景透明
查看>>
基于mini2440的ov9650摄像头裸机测试
查看>>
HDU1702:ACboy needs your help again!
查看>>
对象androidandroid 开发中 如何取得ListView 的 每条Item 的对象
查看>>
怎样维护成功的开源项目
查看>>
mysql服务的启动和停止 net stop mysql net start mysql
查看>>