移动端flex自适应方案。(px to rem)

 1 define(function (require, exports, module) {
 2     exports.mobileUtilMethod = function () {
 3         (function (e, t) {
 4             function n() {
 5                 for (var e = navigator.userAgent,
 6                     t = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"], n = !0, i = 0; t.length > i; i++) if (e.indexOf(t[i]) > 0) {
 7                         n = !1;
 8                         break
 9                     }
10                 return n
11             }
12             function i() {
13                 var t = a.getBoundingClientRect().width;
14                 n() && 2047 > t && (t = 640);
15                 var i = t * 100 / w;
16                 a.style.fontSize = i + "px",
17                     d.rem = e.rem = i
18             }
19             var r, o = e.document,
20                 a = o.documentElement,
21                 s = o.querySelector('meta[name="viewport"]'),
22                 c = o.querySelector('meta[name="flexible"]'),
23                 l = 0,
24                 u = 0,
25                 d = t.flexible || (t.flexible = {});
26             var w = o.querySelector('meta[name="W_design"]') ? o.querySelector('meta[name="W_design"]').getAttribute('content') : 640;
27             if (s) {
28                 // console.warn("将根据已有的meta标签来设置缩放比例");
29                 var p = s.getAttribute("content").match(/initial\-scale=([\d\.]+)/);
30                 p && (u = parseFloat(p[1]), l = parseInt(1 / u))
31             } else if (c) {
32                 var f = c.getAttribute("content");
33                 if (f) {
34                     var h = f.match(/initial\-dpr=([\d\.]+)/),
35                         m = f.match(/maximum\-dpr=([\d\.]+)/);
36                     h && (l = parseFloat(h[1]), u = parseFloat((1 / l).toFixed(2))),
37                         m && (l = parseFloat(m[1]), u = parseFloat((1 / l).toFixed(2)))
38                 }
39             }
40             if (!l && !u) {
41                 e.navigator.appVersion.match(/android/gi);
42                 var g = e.navigator.appVersion.match(/iphone/gi);
43                 e.navigator.appVersion.match(/ipad/gi);
44                 var v = e.devicePixelRatio;
45                 l = g ? v >= 3 && (!l || l >= 3) ? 3 : v >= 2 && (!l || l >= 2) ? 2 : 1 : 1,
46                     u = 1 / l
47             }
48             if (a.setAttribute("data-dpr", l), !s) if (s = o.createElement("meta"), s.setAttribute("name", "viewport"), s.setAttribute("content", "initial-scale=" + u + ", maximum-scale=" + u + ", minimum-scale=" + u + ", user-scalable=no"), a.firstElementChild) a.firstElementChild.appendChild(s);
49             else {
50                 var y = o.createElement("div");
51                 y.appendChild(s),
52                     o.write(y.innerHTML)
53             }
54             e.addEventListener("resize",
55                 function () {
56                     clearTimeout(r),
57                         r = setTimeout(i, 300)
58                 }, !1),
59                 e.addEventListener("pageshow",
60                     function (e) {
61                         e.persisted && (clearTimeout(r), r = setTimeout(i, 300))
62                     }, !1),
63                 "complete" === o.readyState ? o.body.style.fontSize = 12 * l + "px" : o.addEventListener("DOMContentLoaded",
64                     function () {
65                         o.body.style.fontSize = 12 * l + "px"
66                     }, !1),
67                 i(),
68                 d.dpr = e.dpr = l,
69                 d.refreshRem = i,
70                 d.rem2px = function (e) {
71                     var t = parseFloat(e) * this.rem;
72                     return "string" == typeof e && e.match(/rem$/) && (t += "px"),
73                         t
74                 },
75                 d.px2rem = function (e) {
76                     var t = parseFloat(e) / this.rem;
77                     return "string" == typeof e && e.match(/px$/) && (t += "rem"),
78                         t
79                 }
80         })(window, window.lib || (window.lib = {}));
81     }
82 })

猜你喜欢

转载自www.cnblogs.com/souleigh-hong/p/9054537.html