1、设置viewport
width设置为设备的宽度,缩放的倍数是1,禁止用户缩放(可根据实际业务设置)
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover" />
2、rem实现
通过设置rem的基准值
(function(designWidth, maxWidth) {
var doc = document,
win = window,
docEl = doc.documentElement,
remStyle = document.createElement("style"),
tid;
function refreshRem() {
var width = docEl.getBoundingClientRect().width;
maxWidth = maxWidth || 540;
width > maxWidth && (width = maxWidth);
var rem = width * 100 / designWidth;
if (IsPC()) {
rem = 100;
}
remStyle.innerHTML = 'html{font-size:' + rem + 'px;}';
}
function IsPC() {
var userAgentInfo = navigator.userAgent;
var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
var flag = true;
for (var v = 0; v < Agents.length; v++) {
if (userAgentInfo.indexOf(Agents[v]) > 0) {
flag = false;
break;
}
}
return flag;
}
function SetFontFamily() {
if (IsPC()) {
doc.body.style.fontFamily = " Microsoft YaHei, Arial, Helvetica, sans-serif";
} else {
doc.body.style.fontFamily = " PingFangSC-Regular, Helvetica, 'Droid Sans', Arial, sans-serif";
}
}
if (docEl.firstElementChild) {
docEl.firstElementChild.appendChild(remStyle);
} else {
var wrap = doc.createElement("div");
wrap.appendChild(remStyle);
doc.write(wrap.innerHTML);
wrap = null;
}
refreshRem();
win.addEventListener("resize", function() {
clearTimeout(tid); //防止执行两次
tid = setTimeout(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 = "100px";
SetFontFamily();
} else {
doc.addEventListener("DOMContentLoaded", function(e) {
doc.body.style.fontSize = "100px";
SetFontFamily();
}, false);
}
})(375, 750);