之前通过rem来做过一个手机端的布局,发现使用起来自适应页面还是非常方便。
直接上计算的js代码.
因为设计稿是750px,所以js中是按照750px来计算的,可以自行修改。
使用时引入js,用设计稿的px数值除以75就ok
<script> (function(win) { var remCalc = {}; var docEl = win.document.documentElement, tid; function refreshRem() { var width = docEl.getBoundingClientRect().width; if(width > 750) { width = 750 }; var rem = width / 10; docEl.style.fontSize = rem + "px"; remCalc.rem = rem; var actualSize = parseFloat(window.getComputedStyle(document.documentElement)["font-size"]); if(actualSize !== rem && actualSize > 0 && Math.abs(actualSize - rem) > 1) { var remScaled = rem * rem / actualSize; docEl.style.fontSize = remScaled + "px" } }; function dbcRefresh() { clearTimeout(tid); tid = setTimeout(refreshRem, 100) }; win.addEventListener("resize", function() { dbcRefresh() }, false); win.addEventListener("pageshow", function(e) { if(e.persisted) { dbcRefresh() } }, false); refreshRem(); remCalc.refreshRem = refreshRem; remCalc.rem2px = function(d) { var val = parseFloat(d) * this.rem; if(typeof d === "string" && d.match(/rem$/)) { val += "px" }; return val }; remCalc.px2rem = function(d) { var val = parseFloat(d) / this.rem; if(typeof d === "string" && d.match(/px$/)) { val += "rem" }; return val }; win.remCalc = remCalc })(window); </script>