本来想写一篇,webapp使用Rem的问题,查了一下相关rem的介绍之后,发现很多平台已经解释的很清楚了,图文并茂,于是我便想将其解释资源整理一些,方便以后自己查阅。
腾讯ISUX:web app变革之rem(解释的最精辟了)
大漠博客:css3的REM设置字体大小
小黑成长录:关于webapp中的文字单位的一些捣腾
最后分享一段淘宝手机屏幕尺寸判断改变字体大小的js:
!function(x) { function w() { var a = r.getBoundingClientRect().width; a / v > 540 && (a = 540 * v), x.rem = a / 16, r.style.fontSize = x.rem + "px" } var v, u, t, s = x.document, r = s.documentElement, q = s.querySelector('meta[name="viewport"]'), p = s.querySelector('meta[name="flexible"]'); if (q) { console.warn("将根据已有的meta标签来设置缩放比例"); var o = q.getAttribute("content").match(/initial\-scale=(["']?)([\d\.]+)\1?/); o && (u = parseFloat(o[2]), v = parseInt(1 / u)) } else { if (p) { var o = p.getAttribute("content").match(/initial\-dpr=(["']?)([\d\.]+)\1?/); o && (v = parseFloat(o[2]), u = parseFloat((1 / v).toFixed(2))) } } if (!v && !u) { var n = (x.navigator.appVersion.match(/android/gi), x.navigator.appVersion.match(/iphone/gi)), v = x.devicePixelRatio; v = n ? v >= 3 ? 3 : v >= 2 ? 2 : 1 : 1, u = 1 / v } if (r.setAttribute("data-dpr", v), !q) { if (q = s.createElement("meta"), q.setAttribute("name", "viewport"), q.setAttribute("content", "initial-scale=" + u + ", maximum-scale=" + u + ", minimum-scale=" + u + ", user-scalable=no"), r.firstElementChild) { r.firstElementChild.appendChild(q) } else { var m = s.createElement("div"); m.appendChild(q), s.write(m.innerHTML) } } x.dpr = v, x.addEventListener("resize", function() { clearTimeout(t), t = setTimeout(w, 300) }, !1), x.addEventListener("pageshow", function(b) { b.persisted && (clearTimeout(t), t = setTimeout(w, 300)) }, !1), "complete" === s.readyState ? s.body.style.fontSize = 12 * v + "px" : s.addEventListener("DOMContentLoaded", function() { s.body.style.fontSize = 12 * v + "px" }, !1), w()}(window);