您好,欢迎访问一九零五行业门户网

移动端web页面自适应:rem的运用

web页面的自适应开发,要求就是跨平台,跨浏览器,一般mobile+pc,前几天写了几个pc端全屏页面,用的是百分比,在手机上看了下效果 相去甚远。这么看来mobile+pc 的自适应 有些时候就是个伪命题。
那对于移动端的自适应就 一般的宣传页面全屏滑动那种,用百分比,若复杂了就肯定不行,仔细看了下某淘的处理用的rem为单位,就学习在这个方法吧首先对于设计图,width 一般是640的。
rem:css3新增了一个相对单位rem(root em,根em),这样rem 就应该设定在html{font-size:1rem;},
某淘对此的设定是根据手机宽度设定的,
必不可少的这句:bc1ab745c054e9146b86a598017f15ed由js 控制的 。
首先是在苹果上不一样,苹果6就是 这样设置可以用 window.devicepixelratio 设备像素比 
window.clientwitdh*window.devicepixelratio/10  ,这样就得出了font-size大小,
而andorid上有大部分就是、
bc1ab745c054e9146b86a598017f15ed
font-size就是 window.clientwitdh/10;
淘宝里使用的代码:
!function(j, i) { function h() { var d = e.getboundingclientrect().width; d / b > 540 && (d = 540 * b); var e = d / 10; e.style.fontsize = e + "px", z.rem = j.rem = e; } var g, f = j.document, e = f.documentelement, d = f.queryselector('meta[name="viewport"]'), c = f.queryselector('meta[name="flexible"]'), b = 0, a = 0, z = i.flexible || (i.flexible = {}); if (d) { console.warn("将根据已有的meta标签来设置缩放比例"); var y = d.getattribute("content").match(/initial\-scale=([\d\.]+)/); y && (a = parsefloat(y[1]), b = parseint(1 / a)) } else { if (c) { var x = c.getattribute("content"); if (x) { var w = x.match(/initial\-dpr=([\d\.]+)/), v = x.match(/maximum\-dpr=([\d\.]+)/); w && (b = parsefloat(w[1]), a = parsefloat((1 / b).tofixed(2))), v && (b = parsefloat(v[1]), a = parsefloat((1 / b).tofixed(2))) } } } if (!b && !a) { var u = (j.navigator.appversion.match(/android/gi), j.navigator.appversion.match(/iphone/gi)), t = j.devicepixelratio; b = u ? t >= 3 && (!b || b >= 3) ? 3 : t >= 2 && (!b || b >= 2) ? 2 : 1 : 1, a = 1 / b } if (e.setattribute("data-dpr", b), !d) { if (d = f.createelement("meta"), d.setattribute("name", "viewport"), d.setattribute("content", "initial-scale=" + a + ", maximum-scale=" + a + ", minimum-scale=" + a + ", user-scalable=no"), e.firstelementchild) { e.firstelementchild.appendchild(d) } else { var s = f.createelement("p"); s.appendchild(d), f.write(s.innerhtml) } } j.addeventlistener("resize", function() { cleartimeout(g), g = settimeout(h, 300) }, !1), j.addeventlistener("pageshow", function(b) { b.persisted && (cleartimeout(g), g = settimeout(h, 300)) }, !1), "complete" === f.readystate ? f.body.style.fontsize = 12 * b + "px": f.addeventlistener("domcontentloaded", function() { f.body.style.fontsize = 12 * b + "px" }, !1), h(), z.dpr = j.dpr = b, z.refreshrem = h, z.rem2px = function(d) { var c = parsefloat(d) * this.rem; return "string" == typeof d && d.match(/rem$/) && (c += "px"), c }, z.px2rem = function(d) { var c = parsefloat(d) / this.rem; return "string" == typeof d && d.match(/px$/) && (c += "rem"), c } } (window, window.lib || (window.lib = {}));
以上就是移动端web页面自适应:rem的运用的详细内容。
其它类似信息

推荐信息