博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript控制rem字体大小
阅读量:5233 次
发布时间:2019-06-14

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

摘要:在写响应式H5页面的时候,我常常会用rem字体,为了兼容多个分辨率的设备,需要写多个@media标签,太麻烦并且不够精致,尤其是移动端的页面往往达不到我想要的效果,后来就用js替代了css的@media,下面是代码。(以下方案以750px的设计图)

方案一、缺点:浏览器里使用没问题,安卓和ios设备hybrid app里嵌入的时候,会受到系统字体设置的影响,原理就是当系统设置超大字体的时候,会改变html的font-size大小,引起页面bug。

(function (doc, win) {    var docEl = doc.documentElement,        resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',        recalc = function () {            var clientWidth = docEl.clientWidth;            if (!clientWidth) return;            if(clientWidth>=750){                docEl.style.fontSize = '100px';            }else{                docEl.style.fontSize = 100 * (clientWidth / 750) + 'px !important';            }        };    if (!doc.addEventListener) return;    win.addEventListener(resizeEvt, recalc, false);    doc.addEventListener('DOMContentLoaded', recalc, false);})(document, window);

方案二、重置了系统设置的字体,解决了此bug,暂无发现有其他问题

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 > 750 ? 750 : width;     var fz = ~~(width*100000/37.5)/20000;     document.getElementsByTagName("html")[0].style.cssText = 'font-size: ' + fz +"px";     var realfz = ~~(+window.getComputedStyle(document.getElementsByTagName("html")[0]).fontSize.replace('px','')*10000)/10000;       if (fz !== realfz) {         document.getElementsByTagName("html")[0].style.cssText = 'font-size:' + fz * (fz / realfz)+"px";     } }

衍生问题:安卓和ios怎么屏蔽系统字体大小的设置?

安卓、WebView加上这个设置后,可以屏蔽系统设置的字体影响,这样就不用js再去判断了。

webview.getSettings().setTextZoom(100);

ios、ios当系统字体变化时,会给body增加新属性 -webkit-text-size-adjust,所以直接css控制下。

body {    -webkit-text-size-adjust: 100% !important;}

感谢开源,文中部分文字源自网络,如有侵权,请联系删除

周明杰

转载于:https://www.cnblogs.com/zhoumingjie/p/8416726.html

你可能感兴趣的文章
Apache Common-IO 使用
查看>>
评价意见整合
查看>>
二、create-react-app自定义配置
查看>>
Android PullToRefreshExpandableListView的点击事件
查看>>
系统的横向结构(AOP)
查看>>
linux常用命令
查看>>
NHibernate.3.0.Cookbook第四章第6节的翻译
查看>>
使用shared memory 计算矩阵乘法 (其实并没有加速多少)
查看>>
Django 相关
查看>>
git init
查看>>
训练记录
查看>>
IList和DataSet性能差别 转自 http://blog.csdn.net/ilovemsdn/article/details/2954335
查看>>
Hive教程(1)
查看>>
第16周总结
查看>>
C#编程时应注意的性能处理
查看>>
Fragment
查看>>
比较安全的获取站点更目录
查看>>
苹果开发者账号那些事儿(二)
查看>>
使用C#交互快速生成代码!
查看>>
UVA11374 Airport Express
查看>>