HTML5页面布局单位由px转换rem解决方案 - 兼容部分老年机设置为大号字体样式错乱问题
/* * 痛点:HTML5页面布局单位由px转换rem解决方案 * 作者:jonyguan [309678100@qq.com] * 下载: git clone https://gitee.com/jonyguan/html5-px2rem.git * 理解:px-em-rem-percent-points.png 可以看看这个图是rem和其他单位之间的关系 * 把屏幕100等分,我们需要根据实际页面尺寸乘以100除640得到页面根元素html字体大小font-size,比如320px屏html字体设置为50px,并限制了最大宽度640,最小宽度320,实际切图过程中,可以直接除以100就可以了,比如 width:120px 转为rem width:1.2rem * HTML viewport:<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no,viewport-fit=cover"> * 解决部分老年机,微信设置了字体影响页面布局问题 * CSS 需要给body添加样式,解决苹果微信浏览器字体不兼容问题:body{-webkit-text-size-adjust: 100% !important;} */ (function(doc,win) { var docEl = win.document.documentElement, tid; function refreshRem() { var width = docEl.getBoundingClientRect().width; if (width > 750) { width = 750; } if (width < 320) { width = 320; } var rem = width / 750*100;//以750px为原稿,除以100可得各元素的rem docEl.style.fontSize = rem + "px"; var actualSize = parseFloat(window.getComputedStyle(docEl)["font-size"]); if (actualSize !== rem) { var remScaled = rem / ( actualSize / rem ); docEl.style.fontSize = remScaled + "px" } } function dbcRefresh() { clearTimeout(tid); tid = setTimeout(refreshRem, 10); } win.addEventListener("resize", function() { dbcRefresh() }, false); doc.addEventListener('DOMContentLoaded', dbcRefresh(), false); win.addEventListener("pageshow", function(e) { if (e.persisted) { dbcRefresh() } }, false); refreshRem(); })(document,window);