需求:
-
要做一个1024*768; 4:3的屏幕适配;
-
正常电脑上也得好好显示🙄
一个比较简单的方法是:
- 距离类的比如 width height margin 用vh vw ;
可以理解为如果UI图上宽度是500,他的百分比是30.86%,那我就设置width:30.86vw; 这样他就相对于整个视口宽度的 30.86%了;(UI图可以通过选中后按Alt键查看百分比)
- font size 用rem 适配;
需要向根HTML中添加一段js,传入 UI图大小和允许最大的宽度
`
function refreshRem() {
var width = docEl.getBoundingClientRect().width;
maxWidth = maxWidth || 540;
width > maxWidth && (width = maxWidth);
var rem = width * 100 / designWidth;
remStyle.innerHTML = 'html{font-size:' + rem + 'px;}';
}
if (docEl.firstElementChild) {
docEl.firstElementChild.appendChild(remStyle);
} else {
var wrap = doc.createElement("div");
wrap.appendChild(remStyle);
doc.write(wrap.innerHTML);
wrap = null;
}
//要等 wiewport 设置好后才能执行 refreshRem,不然 refreshRem 会执行2次;
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 = "16px";
} else {
doc.addEventListener("DOMContentLoaded", function (e) {
doc.body.style.fontSize = "16px";
}, false);
}
})(1024, 2000)
`
eg:想设置16px ; 即font-size: .16rem;
或者使用插件
px-to-viewport会将px自动转换成vw vh
还有
px-to-rem