Created
August 3, 2021 09:11
-
-
Save jerrylau91/8b07fd9b2d46124db40b19623da7edef to your computer and use it in GitHub Desktop.
移动端 REM 适配方案
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;(function (designWidth, maxWidth) { | |
var doc = document, | |
win = window; | |
var docEl = doc.documentElement; | |
var tid; | |
var rootItem, rootStyle; | |
function refreshRem() { | |
var width = docEl.getBoundingClientRect().width; | |
if (!maxWidth) { | |
maxWidth = 540; | |
} | |
; | |
if (width > maxWidth) { | |
width = maxWidth; | |
} | |
//与淘宝做法不同,直接采用简单的rem换算方法1rem=100px | |
var rem = width * 100 / designWidth; | |
//兼容UC开始 | |
rootStyle = "html{font-size:" + rem + 'px !important}'; | |
rootItem = document.getElementById('rootsize') || document.createElement("style"); | |
if (!document.getElementById('rootsize')) { | |
document.getElementsByTagName("head")[0].appendChild(rootItem); | |
rootItem.id = 'rootsize'; | |
} | |
if (rootItem.styleSheet) { | |
rootItem.styleSheet.disabled || (rootItem.styleSheet.cssText = rootStyle) | |
} else { | |
try { | |
rootItem.innerHTML = rootStyle | |
} catch (f) { | |
rootItem.innerText = rootStyle | |
} | |
} | |
//兼容UC结束 | |
docEl.style.fontSize = rem + "px"; | |
}; | |
refreshRem(); | |
win.addEventListener("resize", function () { | |
clearTimeout(tid); //防止执行两次 | |
tid = setT imeout(refreshRem, 300); | |
}, false); | |
win.addEventListener("pageshow", function (e) { | |
if (e.persisted) { // 浏览器后退的时候重新计算 | |
clearTimeout(tid); | |
tid = setTimeout(refreshRem, 300); | |
} | |
}, false); | |
if (doc.readyState === "complete") { | |
doc.body.style.fontSize = "16px"; | |
} else { | |
doc.addEventListener("DOMContentLoaded", function (e) { | |
doc.body.style.fontSize = "16px"; | |
}, false); | |
} | |
})(375, 750); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment