70.JS---利用原生js作手機端網頁自適應解決方案rem佈局

               利用原生js作手機端網頁自適應解決方案rem佈局css

剛開始我用的是下面這段代碼,而後js經過外部連接引入,最後每次用手機刷新網頁的時候都會出現縮略圖html

function getRem(pwidth, prem) {
var html = document.getElementsByTagName("html")[0];
var oWidth = document.body.clientWidth || document.documentElement.clientWidth;
html.style.fontSize = oWidth / pwidth * prem + "px";
}

$(document).ready(function () {
getRem(750, 100);
});



而後我試着寫在html頁面,也會出現短暫的縮略圖,做爲一個處女座的我來講,是絕對不容許的。
因此我在網上找了不少代碼,發現他們有的只能在電腦上F12測試,並不能用手機上面的瀏覽器進行測試,還有其餘一些也不能兼容。
最後我找到了網易的rem自適應代碼。

(function(doc, win) {
    var docEl = doc.documentElement,
isIOS = navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
dpr = isIOS ? Math.min(win.devicePixelRatio, 3) : 1,
dpr = window.top === window.self ? dpr : 1, //被iframe引用時,禁止縮放
dpr = 1,
scale = 1 / dpr,
resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize';
docEl.dataset.dpr = dpr;
var metaEl = doc.createElement('meta');
metaEl.name = 'viewport';
metaEl.content = 'initial-scale=' + scale + ',maximum-scale=' + scale + ', minimum-scale=' + scale;
docEl.firstElementChild.appendChild(metaEl);
var recalc = function() {
var width = docEl.clientWidth;
if (width / dpr > 750) {
width = 750 * dpr;
}
// 乘以100,px : rem = 100 : 1
docEl.style.fontSize = 100 * (width / 750) + 'px';
};
recalc()
if (!doc.addEventListener) return;
win.addEventListener(resizeEvt, recalc, false);
})(document, window);

通過測試,在電腦上和手機上的測試,都兼容全部分辨率的手機,而且還能隨着屏幕寬度進行實時變化。
這樣就不用考慮 $(window).resize(function () {})

惟一的不便就是不能經過外部連接的形式引入js,只能寫在每一個頁面的head裏面,用內聯的方式寫進html頁面。

上面的比例是750:100,按照設計圖上面,全部大小都要除以100.
例:

未引入前:瀏覽器

body { width: 750px; height: 640px; }

引入後:除以100並將px換成remapp

body { width: 7.5rem; height: 6.4rem; }
相關文章
相關標籤/搜索