移动端适配
项目中使用px编译后转为rem
安装插件
npm i postcss-pxtorem -D
与package.json同级目录创建postcss.config.js文件
module.exports = {
plugins: {
autoprefixer: {
overrideBrowserslist: [
"Android 4.1",
"iOS 7.1",
"Chrome > 31",
"ff > 31",
"ie >= 8",
"last 10 versions", // 所有主流浏览器最近10版本用
],
grid: true,
},
'postcss-pxtorem': {
rootValue: 37.5,
propList: ['*'],
unitPrecision: 5
}
}
}
这里只实现了 px转rem,还要安装 amfe-flexible
npm i amfe-flexible -D
在main.ts文件中 import 一下就好可以了
import 'amfe-flexible/index.js'
最后安装autoprefixer, 否则编译会报错
npm i autoprefixer
如果项目中使用了vant,修改post.config.js文件,修改后的postcss.config.js文件
module.exports = {
plugins: {
autoprefixer: {
overrideBrowserslist: [
"Android 4.1",
"iOS 7.1",
"Chrome > 31",
"ff > 31",
"ie >= 8",
"last 10 versions", // 所有主流浏览器最近10版本用
],
grid: true,
},
'postcss-pxtorem': {
rootValue({ file }) {
return file.indexOf('vant') !== -1 ? 37.5 : 75;
},
propList: ['*'],
unitPrecision: 5
}
}
}
使用rem.js
rem.js,main.js中引入,设置rem基准值之后,尺寸用rem为单位,此代码基准是75,可安装VS Code插件px to rem,并配置基准为75
// 处理手机不同分辨率兼容问题,main.js中引入,设置rem基准值之后,尺寸用rem为单位
!function (j, i) {
function k() {
var c, d = p.getBoundingClientRect().width;
d > 750 && (d = 750), c = d / 10, p.style.fontSize = c + "px"
}
var o, l, p = j.documentElement,
n = j.querySelector('meta[name="viewport"]'),
m = "width=device-width,initial-scale=1,maximum-scale=1.0,user-scalable=no";
n ? n.setAttribute("content", m) : (n = j.createElement("meta"), n.setAttribute("name", "viewport"), n.setAttribute(
"content", m), p.firstElementChild ? p.firstElementChild.appendChild(n) : (l =
j.createElement("div"), l.appendChild(n), j.write(l.innerHTML))), k(), i.addEventListener("resize", function () {
clearTimeout(o), o = setTimeout(k, 300)
}, !1), i.addEventListener("pageshow", function (b) {
b.persisted && (clearTimeout(o), o = setTimeout(k, 300))
}, !1), "complete" === j.readyState ? j.body.style.fontSize = "16px" : j.addEventListener("DOMContentLoaded", function () {
j.body.style.fontSize = "16px"
}, !1)
}(document, window);


浙公网安备 33010602011771号